diff --git a/docsrc/installation.dxx b/docsrc/installation.dxx index 97adae652..2e26b6390 100755 --- a/docsrc/installation.dxx +++ b/docsrc/installation.dxx @@ -32,6 +32,8 @@ > make examples # build examples (optional, Linux/Unix and MinGW only) \endcode + When you use gcc 4.8.1, make sure to change the optimization level to -O2 in the cmake configuration (this is best done in the cmake GUI that you get by calling ccmake . before invoking make). The -O3 level in that compiler is buggy and leads to crashes. + If you use Microsoft Visual C++, you just execute cmake (not make) or cmake-gui with the appropriate generator which creates a solution file '<vigra_build_path>/vigra.sln'. This file must be opened in Visual Studio, and the projects 'ALL_BUILD', 'check', 'doc', 'INSTALL', and 'examples' should be generated. Important note: If you include "windows.h" in your projects: there are some name clashes with VIGRA -- always include "vigra/windows.h" instead. cmake [options] customize installation directories and guide cmake in its search for the VIGRA dependencies. On a Linux system, it is often possible to configure without any options. The most commonly used options are: diff --git a/include/vigra/colorconversions.hxx b/include/vigra/colorconversions.hxx index 558feb537..0fd77395c 100644 --- a/include/vigra/colorconversions.hxx +++ b/include/vigra/colorconversions.hxx @@ -76,7 +76,7 @@ inline ValueType sRGBCorrection(double value, double norm) value /= norm; typedef typename NumericTraits::RealPromote Promote; return NumericTraits::fromRealPromote( - RequiresExplicitCast::cast( + RequiresExplicitCast::cast( (value <= 0.0031308) ? norm*12.92*value : norm*(1.055*std::pow(value, 0.41666666666666667) - 0.055))); @@ -88,7 +88,7 @@ inline ValueType inverse_sRGBCorrection(double value, double norm) value /= norm; typedef typename NumericTraits::RealPromote Promote; return NumericTraits::fromRealPromote( - RequiresExplicitCast::cast( + RequiresExplicitCast::cast( (value <= 0.04045) ? norm*value / 12.92 : norm*VIGRA_CSTD::pow((value + 0.055)/1.055, 2.4))); diff --git a/include/vigra/impex.hxx b/include/vigra/impex.hxx index 6e8437ae2..00c5eb2c0 100644 --- a/include/vigra/impex.hxx +++ b/include/vigra/impex.hxx @@ -284,7 +284,6 @@ namespace vigra const ImageScaler& image_scaler) { typedef typename ImageIterator::row_iterator ImageRowIterator; - typedef typename ImageAccessor::value_type ImageValueType; typedef RequiresExplicitCast explicit_cast; diff --git a/include/vigra/impexalpha.hxx b/include/vigra/impexalpha.hxx index 37e8992fb..0426d676a 100644 --- a/include/vigra/impexalpha.hxx +++ b/include/vigra/impexalpha.hxx @@ -479,10 +479,7 @@ namespace vigra const AlphaScaler& alpha_scaler) { typedef typename ImageIterator::row_iterator ImageRowIterator; - typedef typename ImageAccessor::value_type ImageValueType; - typedef typename AlphaIterator::row_iterator AlphaRowIterator; - typedef typename AlphaAccessor::value_type AlphaValueType; typedef detail::RequiresExplicitCast explicit_cast; diff --git a/include/vigra/labelvolume.hxx b/include/vigra/labelvolume.hxx index 520cedfa0..abf73961c 100644 --- a/include/vigra/labelvolume.hxx +++ b/include/vigra/labelvolume.hxx @@ -271,7 +271,7 @@ unsigned int labelVolume(SrcIterator s_Iter, SrcShape srcShape, SrcAccessor sa, int j=0; while(nc.direction() != Neighborhood3D::Error) { - /* + SrcShape s(x,y,z), sn = s + *nc; if (sn[0]<0 || sn[0]>=w || sn[1]<0 || sn[1]>=h || sn[2]<0 || sn[2]>=d) @@ -280,7 +280,7 @@ unsigned int labelVolume(SrcIterator s_Iter, SrcShape srcShape, SrcAccessor sa, atBorder << std::endl; } - */ + // colors equal??? if(equal(sa(xs), sa(xs, *nc))) { @@ -617,6 +617,14 @@ unsigned int labelVolumeWithBackground(SrcIterator s_Iter, SrcShape srcShape, Sr int j=0; while(nc.direction() != Neighborhood3D::Error) { + SrcShape s(x,y,z), sn = s + *nc; + + if (sn[0]<0 || sn[0]>=w || sn[1]<0 || sn[1]>=h || sn[2]<0 || sn[2]>=d) + { + std::cerr << "coordinate error at " << s << ", offset " << *nc << ", index " << (nc).direction() << " at border " << + atBorder << std::endl; + + } // colors equal??? if(equal(sa(xs), sa(xs, *nc))) { diff --git a/include/vigra/linear_solve.hxx b/include/vigra/linear_solve.hxx index 8f4998e90..f6dd258a4 100644 --- a/include/vigra/linear_solve.hxx +++ b/include/vigra/linear_solve.hxx @@ -1014,7 +1014,6 @@ template bool linearSolveUpperTriangular(const MultiArrayView<2, T, C1> &r, const MultiArrayView<2, T, C2> &b, MultiArrayView<2, T, C3> x) { - typedef MultiArrayShape<2>::type Shape; MultiArrayIndex m = rowCount(r); MultiArrayIndex rhsCount = columnCount(b); vigra_precondition(m == columnCount(r), @@ -1197,9 +1196,6 @@ bool linearSolve(MultiArrayView<2, T, C1> const & A, MultiArrayView<2, T, C3> res, std::string method = "QR") { - typedef typename Matrix::difference_type Shape; - typedef typename Matrix::view_type SubMatrix; - const MultiArrayIndex n = columnCount(A); const MultiArrayIndex m = rowCount(A); diff --git a/include/vigra/localminmax.hxx b/include/vigra/localminmax.hxx index ffde82083..f8515a8a1 100644 --- a/include/vigra/localminmax.hxx +++ b/include/vigra/localminmax.hxx @@ -1530,8 +1530,6 @@ extendedLocalMinima(SrcIterator sul, SrcIterator slr, SrcAccessor sa, DestIterator dul, DestAccessor da, typename DestAccessor::value_type marker) { - typedef typename SrcAccessor::value_type SrcType; - extendedLocalMinima(sul, slr, sa, dul, da, marker, EightNeighborCode()); } @@ -1880,8 +1878,6 @@ extendedLocalMaxima(SrcIterator sul, SrcIterator slr, SrcAccessor sa, DestIterator dul, DestAccessor da, typename DestAccessor::value_type marker) { - typedef typename SrcAccessor::value_type SrcType; - extendedLocalMaxima(sul, slr, sa, dul, da, marker, EightNeighborCode()); } diff --git a/include/vigra/multi_convolution.hxx b/include/vigra/multi_convolution.hxx index 1b44b795a..4033b5432 100644 --- a/include/vigra/multi_convolution.hxx +++ b/include/vigra/multi_convolution.hxx @@ -597,7 +597,6 @@ internalSeparableConvolveSubarray( typedef MultiArrayNavigator SNavigator; typedef MultiArrayNavigator TNavigator; - typedef MultiArrayNavigator DNavigator; TmpAcessor acc; @@ -1253,8 +1252,6 @@ gaussianSmoothMultiArray( SrcIterator s, SrcShape const & shape, SrcAccessor src const ConvolutionOptions & opt, const char *const function_name = "gaussianSmoothMultiArray" ) { - typedef typename DestAccessor::value_type DestType; - static const int N = SrcShape::static_size; typename ConvolutionOptions::ScaleIterator params = opt.scaleParams(); @@ -2142,7 +2139,6 @@ gaussianDivergenceMultiArray(Iterator vectorField, Iterator vectorFieldEnd, MultiArrayView divergence, ConvolutionOptions opt) { - typedef typename MultiArrayShape::type Shape; typedef typename std::iterator_traits::value_type ArrayType; typedef typename ArrayType::value_type SrcType; typedef typename NumericTraits::RealPromote TmpType; diff --git a/include/vigra/multi_localminmax.hxx b/include/vigra/multi_localminmax.hxx index e49660810..eddbab0ae 100644 --- a/include/vigra/multi_localminmax.hxx +++ b/include/vigra/multi_localminmax.hxx @@ -211,7 +211,7 @@ localMinMax(MultiArrayView const & src, vigra_precondition(src.shape() == dest.shape(), "localMinMax(): shape mismatch between input and output."); - NeighborhoodType neighborhood; + NeighborhoodType neighborhood = DirectNeighborhood; if(options.neigh == 0 || options.neigh == 2*N) neighborhood = DirectNeighborhood; diff --git a/include/vigra/multi_morphology.hxx b/include/vigra/multi_morphology.hxx index 151c2bb25..1ca747f40 100644 --- a/include/vigra/multi_morphology.hxx +++ b/include/vigra/multi_morphology.hxx @@ -479,9 +479,6 @@ multiGrayscaleErosion( SrcIterator s, SrcShape const & shape, SrcAccessor src, // temporary array to hold the current line to enable in-place operation ArrayVector tmp( shape[0] ); - typedef MultiArrayNavigator SNavigator; - typedef MultiArrayNavigator DNavigator; - int MaxDim = 0; for( int i=0; i tmp( shape[0] ); - - typedef MultiArrayNavigator SNavigator; - typedef MultiArrayNavigator DNavigator; int MaxDim = 0; for( int i=0; i::RealPromote TmpType; - typedef MultiArray TmpArray; typedef typename AccessorTraits::default_accessor TmpAccessor; if(N==1) diff --git a/include/vigra/multi_watersheds.hxx b/include/vigra/multi_watersheds.hxx index 05449d929..5e1d24c54 100644 --- a/include/vigra/multi_watersheds.hxx +++ b/include/vigra/multi_watersheds.hxx @@ -89,10 +89,8 @@ unionFindWatersheds(Graph const & g, T2Map const & lowestNeighborIndex, T3Map & labels) { - typedef typename Graph::Node Node; typedef typename Graph::NodeIt graph_scanner; typedef typename Graph::OutBackArcIt neighbor_iterator; - typedef typename T1Map::value_type DataType; typedef typename T3Map::value_type LabelType; vigra::detail::UnionFindArray regions; @@ -288,8 +286,6 @@ watershedsGraph(Graph const & g, T2Map & labels, WatershedOptions const & options) { - typedef typename T2Map::value_type LabelType; - if(options.method == WatershedOptions::UnionFind) { vigra_precondition(g.maxDegree() <= NumericTraits::max(), diff --git a/include/vigra/noise_normalization.hxx b/include/vigra/noise_normalization.hxx index 94aefdf42..56a67f647 100644 --- a/include/vigra/noise_normalization.hxx +++ b/include/vigra/noise_normalization.hxx @@ -548,9 +548,6 @@ findHomogeneousRegionsFoerstner( int w = slr.x - sul.x; int h = slr.y - sul.y; - typedef typename NumericTraits::RealPromote TmpType; - typedef BasicImage TmpImage; - BImage btmp(w, h); transformImage(srcIterRange(sul, slr, src), destImage(btmp), ifThenElse(Arg1() <= Param(homogeneityThreshold), Param(1), Param(0))); @@ -1067,7 +1064,6 @@ void noiseVarianceEstimation(SrcIterator sul, SrcIterator slr, SrcAccessor src, BackInsertable & result, NoiseNormalizationOptions const & options = NoiseNormalizationOptions()) { - typedef typename BackInsertable::value_type ResultType; typedef typename SrcAccessor::value_type SrcType; typedef typename NumericTraits::isScalar isScalar; diff --git a/include/vigra/nonlineardiffusion.hxx b/include/vigra/nonlineardiffusion.hxx index dd4279a52..1f3e5cb40 100644 --- a/include/vigra/nonlineardiffusion.hxx +++ b/include/vigra/nonlineardiffusion.hxx @@ -88,10 +88,6 @@ void internalNonlinearDiffusionAOSStep( DestIterator dul, DestAccessor ad, double timestep) { // use traits to determine SumType as to prevent possible overflow - typedef typename - NumericTraits::RealPromote - DestType; - typedef typename NumericTraits::RealPromote WeightType; diff --git a/include/vigra/numpy_array.hxx b/include/vigra/numpy_array.hxx index c4ace17f1..d8264bc8f 100644 --- a/include/vigra/numpy_array.hxx +++ b/include/vigra/numpy_array.hxx @@ -1198,7 +1198,6 @@ destImageRange(NumpyArray<3, Multiband, Stride> & img) { StridedImageIterator ul(img.data(), 1, img.stride(0), img.stride(1)); - typedef typename AccessorTraits::default_accessor Accessor; return triple, StridedImageIterator, MultibandVectorAccessor > @@ -1224,7 +1223,6 @@ maskImage(NumpyArray<3, Multiband, Stride> const & img) { ConstStridedImageIterator ul(img.data(), 1, img.stride(0), img.stride(1)); - typedef typename AccessorTraits::default_accessor Accessor; return pair, MultibandVectorAccessor > (ul, MultibandVectorAccessor(img.shape(2), img.stride(2))); } diff --git a/include/vigra/polynomial.hxx b/include/vigra/polynomial.hxx index 8545a54ff..4ee096465 100644 --- a/include/vigra/polynomial.hxx +++ b/include/vigra/polynomial.hxx @@ -938,7 +938,6 @@ struct PolynomialRootCompare template bool polynomialRoots(POLYNOMIAL const & poriginal, VECTOR & roots, bool polishRoots) { - typedef typename POLYNOMIAL::value_type T; typedef typename POLYNOMIAL::Real Real; typedef typename POLYNOMIAL::Complex Complex; typedef typename POLYNOMIAL::ComplexPolynomial WorkPolynomial; diff --git a/include/vigra/random_forest/rf_algorithm.hxx b/include/vigra/random_forest/rf_algorithm.hxx index 109254215..fba236a01 100644 --- a/include/vigra/random_forest/rf_algorithm.hxx +++ b/include/vigra/random_forest/rf_algorithm.hxx @@ -734,7 +734,6 @@ public: { MultiArray<2, T> dist(distance); std::vector > addr; - typedef std::pair Entry; int index = 0; for(int ii = 0; ii < distance.shape(0); ++ii) { diff --git a/include/vigra/random_forest/rf_common.hxx b/include/vigra/random_forest/rf_common.hxx index 5feb7c26d..a82b1f5ee 100755 --- a/include/vigra/random_forest/rf_common.hxx +++ b/include/vigra/random_forest/rf_common.hxx @@ -292,7 +292,6 @@ class RandomForestOptions void make_from_map(map_type & in) // -> const: .operator[] -> .find { - typedef MultiArrayShape<2>::type Shp; #define PULL(item_, type_) item_ = type_(in[#item_][0]); #define PULLBOOL(item_, type_) item_ = type_(in[#item_][0] > 0); PULL(training_set_proportion_,double); @@ -317,7 +316,6 @@ class RandomForestOptions } void make_map(map_type & in) const { - typedef MultiArrayShape<2>::type Shp; #define PUSH(item_, type_) in[#item_] = double_array(1, double(item_)); #define PUSHFUNC(item_, type_) in[#item_] = double_array(1, double(item_!=0)); PUSH(training_set_proportion_,double); @@ -764,7 +762,6 @@ public: void make_from_map(map_type & in) // -> const: .operator[] -> .find { - typedef MultiArrayShape<2>::type Shp; #define PULL(item_, type_) item_ = type_(in[#item_][0]); PULL(column_count_,int); PULL(class_count_, int); @@ -781,7 +778,6 @@ public: } void make_map(map_type & in) const { - typedef MultiArrayShape<2>::type Shp; #define PUSH(item_) in[#item_] = double_array(1, double(item_)); PUSH(column_count_); PUSH(class_count_) diff --git a/include/vigra/random_forest/rf_ridge_split.hxx b/include/vigra/random_forest/rf_ridge_split.hxx index e57662d4e..bb65ddd02 100644 --- a/include/vigra/random_forest/rf_ridge_split.hxx +++ b/include/vigra/random_forest/rf_ridge_split.hxx @@ -135,7 +135,6 @@ class RidgeSplit: public SplitBase { //std::cerr << "Split called" << std::endl; - typedef typename Region::IndexIterator IndexIterator; typedef typename MultiArrayView <2, T, C>::difference_type fShape; typedef typename MultiArrayView <2, T2, C2>::difference_type lShape; typedef typename MultiArrayView <2, double>::difference_type dShape; diff --git a/include/vigra/recursiveconvolution.hxx b/include/vigra/recursiveconvolution.hxx index 03bfefba6..87056310b 100644 --- a/include/vigra/recursiveconvolution.hxx +++ b/include/vigra/recursiveconvolution.hxx @@ -316,7 +316,6 @@ void recursiveFilterLine(SrcIterator is, SrcIterator isend, SrcAccessor as, typedef typename NumericTraits::RealPromote TempType; - typedef NumericTraits DestTraits; // speichert den Ergebnis der linkseitigen Filterung. std::vector vline(w+1); @@ -469,7 +468,6 @@ recursiveGaussianFilterLine(SrcIterator is, SrcIterator isend, SrcAccessor as, typedef typename NumericTraits::RealPromote TempType; - typedef NumericTraits DestTraits; // speichert das Ergebnis der linkseitigen Filterung. std::vector yforward(w); diff --git a/include/vigra/regression.hxx b/include/vigra/regression.hxx index 57892b0bc..c10c80e28 100644 --- a/include/vigra/regression.hxx +++ b/include/vigra/regression.hxx @@ -124,8 +124,6 @@ weightedLeastSquares(MultiArrayView<2, T, C1> const & A, MultiArrayView<2, T, C2> const &b, MultiArrayView<2, T, C3> const &weights, MultiArrayView<2, T, C4> &x, std::string method = "QR") { - typedef T Real; - const unsigned int rows = rowCount(A); const unsigned int cols = columnCount(A); const unsigned int rhsCount = columnCount(b); @@ -183,8 +181,6 @@ bool ridgeRegression(MultiArrayView<2, T, C1> const & A, MultiArrayView<2, T, C2> const &b, MultiArrayView<2, T, C3> &x, double lambda) { - typedef T Real; - const unsigned int rows = rowCount(A); const unsigned int cols = columnCount(A); const unsigned int rhsCount = columnCount(b); @@ -257,8 +253,6 @@ weightedRidgeRegression(MultiArrayView<2, T, C1> const & A, MultiArrayView<2, T, C2> const &b, MultiArrayView<2, T, C3> const &weights, MultiArrayView<2, T, C4> &x, double lambda) { - typedef T Real; - const unsigned int rows = rowCount(A); const unsigned int cols = columnCount(A); const unsigned int rhsCount = columnCount(b); @@ -310,8 +304,6 @@ bool ridgeRegressionSeries(MultiArrayView<2, T, C1> const & A, MultiArrayView<2, T, C2> const &b, MultiArrayView<2, T, C3> &x, Array const & lambda) { - typedef T Real; - const unsigned int rows = rowCount(A); const unsigned int cols = columnCount(A); const unsigned int lambdaCount = lambda.size(); diff --git a/include/vigra/separableconvolution.hxx b/include/vigra/separableconvolution.hxx index 6f52a5961..3ae5781d1 100644 --- a/include/vigra/separableconvolution.hxx +++ b/include/vigra/separableconvolution.hxx @@ -902,8 +902,6 @@ void convolveLine(SrcIterator is, SrcIterator iend, SrcAccessor sa, int kleft, int kright, BorderTreatmentMode border, int start = 0, int stop = 0) { - typedef typename KernelAccessor::value_type KernelValue; - vigra_precondition(kleft <= 0, "convolveLine(): kleft must be <= 0.\n"); vigra_precondition(kright >= 0, @@ -1093,8 +1091,6 @@ void separableConvolveX(SrcIterator supperleft, KernelIterator ik, KernelAccessor ka, int kleft, int kright, BorderTreatmentMode border) { - typedef typename KernelAccessor::value_type KernelValue; - vigra_precondition(kleft <= 0, "separableConvolveX(): kleft must be <= 0.\n"); vigra_precondition(kright >= 0, @@ -1250,8 +1246,6 @@ void separableConvolveY(SrcIterator supperleft, KernelIterator ik, KernelAccessor ka, int kleft, int kright, BorderTreatmentMode border) { - typedef typename KernelAccessor::value_type KernelValue; - vigra_precondition(kleft <= 0, "separableConvolveY(): kleft must be <= 0.\n"); vigra_precondition(kright >= 0, diff --git a/include/vigra/singular_value_decomposition.hxx b/include/vigra/singular_value_decomposition.hxx index 66bbfe64a..86ddff374 100644 --- a/include/vigra/singular_value_decomposition.hxx +++ b/include/vigra/singular_value_decomposition.hxx @@ -76,7 +76,6 @@ singularValueDecomposition(MultiArrayView<2, T, C1> const & A, MultiArrayView<2, T, C2> &U, MultiArrayView<2, T, C3> &S, MultiArrayView<2, T, C4> &V) { typedef T Real; - typedef MultiArrayShape<2>::type Shape; const MultiArrayIndex rows = rowCount(A); const MultiArrayIndex cols = columnCount(A); diff --git a/src/impex/pnm.cxx b/src/impex/pnm.cxx index 0dd349c64..9cf39d2ef 100644 --- a/src/impex/pnm.cxx +++ b/src/impex/pnm.cxx @@ -742,10 +742,7 @@ namespace vigra { void PnmEncoderImpl::write_bilevel_raw() { // cast the bands to the correct type - typedef void_vector< UInt8 > vector_type; - //vector_type & cbands = static_cast< vector_type & >(bands); - - // XXX + vigra_fail("PNM write bilevel raw is not implemented, sorry."); } void PnmEncoderImpl::write_raw() diff --git a/test/classifier/test.cxx b/test/classifier/test.cxx index 2bb760f07..0212cd658 100644 --- a/test/classifier/test.cxx +++ b/test/classifier/test.cxx @@ -586,7 +586,6 @@ struct ClassifierTest { std::cerr << "RFoobTest(): Learning each Datasets 10 times\n"; - typedef MultiArrayShape<2>::type _TTT; for(int ii = 0; ii MV; ImageImportInfo info("ghouse.gif"); Shape2 s(info.width(), info.height()); DArray2 in(s), out(s), out2(s), out3(s), out4(s), ref(s), tmp(s); diff --git a/test/multiarray/test.cxx b/test/multiarray/test.cxx index e5a0490c2..eb18ec562 100644 --- a/test/multiarray/test.cxx +++ b/test/multiarray/test.cxx @@ -264,7 +264,6 @@ class MultiArrayDataTest void testIsStrided() { // for MultiArray<3, Multiband > - typedef difference3_type Shape; should(!array3.isUnstrided()); should(array3.permuteStridesAscending().isUnstrided()); @@ -2908,7 +2907,6 @@ struct MultiArrayDataTestSuite } { typedef Multiband T; - typedef MultiArray<3, T> A; add( testCase( &MultiArrayDataTest::testHasData ) ); add( testCase( &MultiArrayDataTest::testEquality ) ); add( testCase( &MultiArrayDataTest::test_subarray ) ); diff --git a/test/objectfeatures/test.cxx b/test/objectfeatures/test.cxx index 13523b7d5..dad316b93 100644 --- a/test/objectfeatures/test.cxx +++ b/test/objectfeatures/test.cxx @@ -1260,7 +1260,6 @@ struct AccumulatorTest { typedef CoupledIteratorType<2, double, int>::type Iterator; - typedef Iterator::value_type Handle; typedef DynamicAccumulatorChainArray, Select, GlobalRangeHistogram<3>, diff --git a/vigranumpy/src/core/colors.cxx b/vigranumpy/src/core/colors.cxx index aee0ffe4a..9541ab4c6 100644 --- a/vigranumpy/src/core/colors.cxx +++ b/vigranumpy/src/core/colors.cxx @@ -311,7 +311,6 @@ NumpyAnyArray pythonApplyColortable(const NumpyArray<2, Singleband >& valueIm // Multiband: channel axis is allowed to be singleband, but does not have to be, // will be last when converted Python -> C++ and channel axis is counted in the dimension ('3') typedef NumpyArray<2, Singleband > InputType; - typedef NumpyArray<3, Multiband > OutputType; res.reshapeIfEmpty(valueImage.taggedShape().setChannelCount(colortable.shape(1)), "pythonApplyColortable: shape of res is wrong"); diff --git a/vigranumpy/src/core/impex.cxx b/vigranumpy/src/core/impex.cxx index 9f742e2b4..91db64799 100644 --- a/vigranumpy/src/core/impex.cxx +++ b/vigranumpy/src/core/impex.cxx @@ -207,8 +207,6 @@ template NumpyAnyArray readVolumeImpl(VolumeImportInfo const & info, std::string order = "") { - typedef UnstridedArrayTag Stride; - if(order == "") order = detail::defaultOrder(); diff --git a/vigranumpy/src/core/segmentation.cxx b/vigranumpy/src/core/segmentation.cxx index b122e8681..0fd1d38bc 100644 --- a/vigranumpy/src/core/segmentation.cxx +++ b/vigranumpy/src/core/segmentation.cxx @@ -956,7 +956,6 @@ pythonSlic(NumpyArray array, { typedef typename detail::ResolveMultiband::type ValueType; typedef typename NormTraits::NormType TmpType; - typedef typename NumpyArray::view_type View; std::string description("Slic superpixels");