From 9900f8deb2747fd6946b6687871eb7e53488c4a6 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 22 Oct 2012 17:24:43 +0400 Subject: [PATCH 01/12] Remove russian comments --- modules/objdetect/src/featurepyramid.cpp | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/modules/objdetect/src/featurepyramid.cpp b/modules/objdetect/src/featurepyramid.cpp index a37019f5e..c6bc6c0e8 100644 --- a/modules/objdetect/src/featurepyramid.cpp +++ b/modules/objdetect/src/featurepyramid.cpp @@ -31,28 +31,20 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map) int i, j, kk, c, ii, jj, d; float * datadx, * datady; - //номер канала в цикле int ch; - //переменные вычисления магнитуды float magnitude, x, y, tx, ty; IplImage * dx, * dy; int *nearest; float *w, a_x, b_x; - // ядро для вычисления градиентов изображение по осям x и y float kernel[3] = {-1.f, 0.f, 1.f}; CvMat kernel_dx = cvMat(1, 3, CV_32F, kernel); CvMat kernel_dy = cvMat(3, 1, CV_32F, kernel); - // грачение градиента float * r; - // новер сектора куда попало значение градиента - // четные иннексы не контрастное изображение - // не четные иннексы контрастное изображение int * alfa; - // векторы границ секторов float boundary_x[NUM_SECTOR + 1]; float boundary_y[NUM_SECTOR + 1]; float max, dotProd; @@ -70,7 +62,7 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map) sizeX = width / k; sizeY = height / k; - px = 3 * NUM_SECTOR; // контрастное и не контрастное изображение + px = 3 * NUM_SECTOR; p = px; stringSize = sizeX * p; allocFeatureMapObject(map, sizeX, sizeY, p); @@ -138,7 +130,6 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map) }/*for(i = 0; i < width; i++)*/ }/*for(j = 0; j < height; j++)*/ - //подсчет весов и смещений nearest = (int *)malloc(sizeof(int ) * k); w = (float*)malloc(sizeof(float) * (k * 2)); @@ -167,7 +158,6 @@ int getFeatureMaps(const IplImage* image, const int k, CvLSVMFeatureMap **map) }/*for(j = k / 2; j < k; j++)*/ - //интерполяция for(i = 0; i < sizeY; i++) { for(j = 0; j < sizeX; j++) @@ -275,7 +265,7 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa) sizeY -= 2; newData = (float *)malloc (sizeof(float) * (sizeX * sizeY * pp)); -//normalization + //normalization for(i = 1; i <= sizeY; i++) { for(j = 1; j <= sizeX; j++) @@ -336,12 +326,12 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa) }/*for(ii = 0; ii < 2 * p; ii++)*/ }/*for(j = 1; j <= sizeX; j++)*/ }/*for(i = 1; i <= sizeY; i++)*/ -//truncation + //truncation for(i = 0; i < sizeX * sizeY * pp; i++) { if(newData [i] > alfa) newData [i] = alfa; }/*for(i = 0; i < sizeX * sizeY * pp; i++)*/ -//swop data + //swap data map->numFeatures = pp; map->sizeX = sizeX; @@ -354,6 +344,7 @@ int normalizeAndTruncate(CvLSVMFeatureMap *map, const float alfa) return LATENT_SVM_OK; } + /* // Feature map reduction // In each cell we reduce dimension of the feature vector @@ -427,7 +418,7 @@ int PCAFeatureMaps(CvLSVMFeatureMap *map) } /*for(ii = 0; ii < yp; ii++)*/ }/*for(j = 0; j < sizeX; j++)*/ }/*for(i = 0; i < sizeY; i++)*/ -//swop data + //swap data map->numFeatures = pp; From d0ec65e80c2d6a7b57da9aafa3acd40ea2a66204 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 22 Oct 2012 18:19:32 +0400 Subject: [PATCH 02/12] Fix linux build warning --- modules/python/src2/cv2.cv.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/python/src2/cv2.cv.hpp b/modules/python/src2/cv2.cv.hpp index 0207189a1..09d3c4723 100644 --- a/modules/python/src2/cv2.cv.hpp +++ b/modules/python/src2/cv2.cv.hpp @@ -3829,8 +3829,9 @@ static int zero = 0; coeff_usage = CV_VALUE; \ else if ((length == alpha.count) && (alpha.count == beta.count) && (beta.count == gamma.count)) \ coeff_usage = CV_ARRAY; \ - else \ - return (PyObject*)failmsg("SnakeImage weights invalid"); \ + else { \ + failmsg("SnakeImage weights invalid"); \ + return (PyObject*)0; } \ cvSnakeImage(image, points, length, a, b, g, coeff_usage, win, criteria, calc_gradient); \ } while (0) From 15076f923238d606adc8a20d0de2e738f0dcf829 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 22 Oct 2012 18:39:56 +0400 Subject: [PATCH 03/12] Fix implementation of PCA overload with retained variance parameter --- modules/core/src/matmul.cpp | 4 ++-- modules/core/test/test_mat.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/core/src/matmul.cpp b/modules/core/src/matmul.cpp index af8c57581..9b3868505 100644 --- a/modules/core/src/matmul.cpp +++ b/modules/core/src/matmul.cpp @@ -2813,7 +2813,7 @@ PCA::PCA(InputArray data, InputArray _mean, int flags, int maxComponents) PCA::PCA(InputArray data, InputArray _mean, int flags, double retainedVariance) { - operator()(data, _mean, flags, retainedVariance); + computeVar(data, _mean, flags, retainedVariance); } PCA& PCA::operator()(InputArray _data, InputArray __mean, int flags, int maxComponents) @@ -3077,7 +3077,7 @@ void cv::PCAComputeVar(InputArray data, InputOutputArray mean, OutputArray eigenvectors, double retainedVariance) { PCA pca; - pca(data, mean, 0, retainedVariance); + pca.computeVar(data, mean, 0, retainedVariance); pca.mean.copyTo(mean); pca.eigenvectors.copyTo(eigenvectors); } diff --git a/modules/core/test/test_mat.cpp b/modules/core/test/test_mat.cpp index 8c72789b0..514b587d7 100644 --- a/modules/core/test/test_mat.cpp +++ b/modules/core/test/test_mat.cpp @@ -426,7 +426,7 @@ protected: } // 3. check C++ PCA w/retainedVariance - cPCA( rPoints.t(), Mat(), CV_PCA_DATA_AS_COL, retainedVariance ); + cPCA.computeVar( rPoints.t(), Mat(), CV_PCA_DATA_AS_COL, retainedVariance ); diffPrjEps = 1, diffBackPrjEps = 1; Mat rvPrjTestPoints = cPCA.project(rTestPoints.t()); From 40030d2ca038b1a5b446a023ecb0700ee5d5de83 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 22 Oct 2012 18:46:26 +0400 Subject: [PATCH 04/12] Fix windows build warnings --- modules/core/include/opencv2/core/operations.hpp | 9 +++++++++ modules/core/src/parallel.cpp | 4 ++-- modules/flann/src/miniflann.cpp | 2 +- modules/imgproc/src/color.cpp | 12 ++++++------ 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/modules/core/include/opencv2/core/operations.hpp b/modules/core/include/opencv2/core/operations.hpp index 3d2812ba5..ae279a2e0 100644 --- a/modules/core/include/opencv2/core/operations.hpp +++ b/modules/core/include/opencv2/core/operations.hpp @@ -86,6 +86,11 @@ #include +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable:4127) //conditional expression is constant +#endif + namespace cv { @@ -3950,5 +3955,9 @@ template inline void AlgorithmInfo::addParam(Algorithm& algo, cons } +#ifdef _MSC_VER +# pragma warning(pop) +#endif + #endif // __cplusplus #endif diff --git a/modules/core/src/parallel.cpp b/modules/core/src/parallel.cpp index c31edede8..014b10710 100644 --- a/modules/core/src/parallel.cpp +++ b/modules/core/src/parallel.cpp @@ -362,8 +362,8 @@ void cv::setNumThreads( int threads ) else if (pplScheduler == 0 || 1 + pplScheduler->GetNumberOfVirtualProcessors() != (unsigned int)threads) { pplScheduler = Concurrency::Scheduler::Create(Concurrency::SchedulerPolicy(2, - Concurrency::PolicyElementKey::MinConcurrency, threads-1, - Concurrency::PolicyElementKey::MaxConcurrency, threads-1)); + Concurrency::MinConcurrency, threads-1, + Concurrency::MaxConcurrency, threads-1)); } #endif diff --git a/modules/flann/src/miniflann.cpp b/modules/flann/src/miniflann.cpp index 7d1bce4c0..374710272 100644 --- a/modules/flann/src/miniflann.cpp +++ b/modules/flann/src/miniflann.cpp @@ -500,7 +500,7 @@ int runRadiusSearch_(void* index, const Mat& query, Mat& indices, Mat& dists, ::cvflann::Matrix _dists((DistanceType*)dists.data, dists.rows, dists.cols); return ((IndexType*)index)->radiusSearch(_query, _indices, _dists, - saturate_cast(radius), + saturate_cast(radius), (const ::cvflann::SearchParams&)get_params(params)); } diff --git a/modules/imgproc/src/color.cpp b/modules/imgproc/src/color.cpp index 10fa86788..e85acea3f 100644 --- a/modules/imgproc/src/color.cpp +++ b/modules/imgproc/src/color.cpp @@ -1387,8 +1387,8 @@ struct RGB2Lab_f C6 = coeffs[6], C7 = coeffs[7], C8 = coeffs[8]; n *= 3; - static const float _1_3 = 1.0 / 3.0; - static const double _a = 16.0 / 116; + static const float _1_3 = 1.0f / 3.0f; + static const float _a = 16.0f / 116.0f; for (i = 0; i < n; i += 3, src += scn ) { float R = clip(src[0]); @@ -1409,11 +1409,11 @@ struct RGB2Lab_f float Y = R*C3 + G*C4 + B*C5; float Z = R*C6 + G*C7 + B*C8; - float FX = X > 0.008856 ? pow(X, _1_3) : (7.787f * X + _a); - float FY = Y > 0.008856 ? pow(Y, _1_3) : (7.787f * Y + _a); - float FZ = Z > 0.008856 ? pow(Z, _1_3) : (7.787f * Z + _a); + float FX = X > 0.008856f ? pow(X, _1_3) : (7.787f * X + _a); + float FY = Y > 0.008856f ? pow(Y, _1_3) : (7.787f * Y + _a); + float FZ = Z > 0.008856f ? pow(Z, _1_3) : (7.787f * Z + _a); - float L = Y > 0.008856 ? (116.f * FY - 16.f) : (903.3 * Y); + float L = Y > 0.008856f ? (116.f * FY - 16.f) : (903.3f * Y); float a = 500.f * (FX - FY); float b = 200.f * (FY - FZ); From 2e91405833668d914a0d35b7ca45172ef9bee6e3 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 22 Oct 2012 19:13:29 +0400 Subject: [PATCH 05/12] Fix OS X build warnings --- cmake/OpenCVPCHSupport.cmake | 18 ++++++++++++++---- modules/contrib/src/rgbdodometry.cpp | 3 +++ modules/highgui/src/cap_qtkit.mm | 6 ++++++ modules/highgui/src/grfmt_exr.cpp | 4 ++++ modules/highgui/src/grfmt_exr.hpp | 4 ++++ modules/highgui/src/window_cocoa.mm | 6 ++++-- modules/legacy/src/_kdtree.hpp | 27 +++++++++++++-------------- modules/legacy/src/dpstereo.cpp | 2 +- modules/legacy/src/testseq.cpp | 6 +++--- 9 files changed, 52 insertions(+), 24 deletions(-) diff --git a/cmake/OpenCVPCHSupport.cmake b/cmake/OpenCVPCHSupport.cmake index 290dbd8f6..fac6bd409 100644 --- a/cmake/OpenCVPCHSupport.cmake +++ b/cmake/OpenCVPCHSupport.cmake @@ -182,10 +182,20 @@ MACRO(ADD_PRECOMPILED_HEADER_TO_TARGET _targetName _input _pch_output_to_use ) _PCH_GET_TARGET_COMPILE_FLAGS(_target_cflags ${_name} ${_pch_output_to_use} ${_dowarn}) #MESSAGE("Add flags ${_target_cflags} to ${_targetName} " ) - SET_TARGET_PROPERTIES(${_targetName} - PROPERTIES - COMPILE_FLAGS ${_target_cflags} - ) + + GET_TARGET_PROPERTY(_sources ${_targetName} SOURCES) + FOREACH(src ${_sources}) + if(NOT "${src}" MATCHES "\\.mm$") + get_source_file_property(_flags "${src}" COMPILE_FLAGS) + if(_flags) + set(_flags "${_flags} ${_target_cflags}") + else() + set(_flags "${_target_cflags}") + endif() + + set_source_files_properties("${src}" PROPERTIES COMPILE_FLAGS "${_flags}") + endif() + ENDFOREACH() ADD_CUSTOM_TARGET(pch_Generate_${_targetName} DEPENDS ${_pch_output_to_use} diff --git a/modules/contrib/src/rgbdodometry.cpp b/modules/contrib/src/rgbdodometry.cpp index 1c80e9c55..4e9d8c4df 100644 --- a/modules/contrib/src/rgbdodometry.cpp +++ b/modules/contrib/src/rgbdodometry.cpp @@ -59,6 +59,9 @@ # ifdef ANDROID template Scalar log2(Scalar v) { using std::log; return log(v)/log(Scalar(2)); } # endif +# if defined __GNUC__ && defined __APPLE__ +# pragma GCC diagnostic ignored "-Wshadow" +# endif # include # include #endif diff --git a/modules/highgui/src/cap_qtkit.mm b/modules/highgui/src/cap_qtkit.mm index 783d0d157..c7afffa07 100644 --- a/modules/highgui/src/cap_qtkit.mm +++ b/modules/highgui/src/cap_qtkit.mm @@ -503,6 +503,9 @@ bool CvCaptureCAM::setProperty(int property_id, double value) { didOutputVideoFrame:(CVImageBufferRef)videoFrame withSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection *)connection { + (void)captureOutput; + (void)sampleBuffer; + (void)connection; CVBufferRetain(videoFrame); CVImageBufferRef imageBufferToRelease = mCurrentImageBuffer; @@ -519,6 +522,9 @@ bool CvCaptureCAM::setProperty(int property_id, double value) { - (void)captureOutput:(QTCaptureOutput *)captureOutput didDropVideoFrameWithSampleBuffer:(QTSampleBuffer *)sampleBuffer fromConnection:(QTCaptureConnection *)connection { + (void)captureOutput; + (void)sampleBuffer; + (void)connection; cout << "Camera dropped frame!" << endl; } diff --git a/modules/highgui/src/grfmt_exr.cpp b/modules/highgui/src/grfmt_exr.cpp index ffae12966..c29f4ba36 100644 --- a/modules/highgui/src/grfmt_exr.cpp +++ b/modules/highgui/src/grfmt_exr.cpp @@ -48,6 +48,10 @@ # pragma warning( disable: 4100 4244 4267 ) #endif +#if defined __GNUC__ && defined __APPLE__ +# pragma GCC diagnostic ignored "-Wshadow" +#endif + #include #include #include diff --git a/modules/highgui/src/grfmt_exr.hpp b/modules/highgui/src/grfmt_exr.hpp index 9c8c609d0..b9467c6d2 100644 --- a/modules/highgui/src/grfmt_exr.hpp +++ b/modules/highgui/src/grfmt_exr.hpp @@ -45,6 +45,10 @@ #ifdef HAVE_OPENEXR +#if defined __GNUC__ && defined __APPLE__ +# pragma GCC diagnostic ignored "-Wshadow" +#endif + #include #include #include diff --git a/modules/highgui/src/window_cocoa.mm b/modules/highgui/src/window_cocoa.mm index 886fde933..d3a68107f 100644 --- a/modules/highgui/src/window_cocoa.mm +++ b/modules/highgui/src/window_cocoa.mm @@ -136,7 +136,7 @@ static bool wasInitialized = false; } }*/ -CV_IMPL int cvInitSystem( int argc, char** argv) +CV_IMPL int cvInitSystem( int , char** ) { //cout << "cvInitSystem" << endl; wasInitialized = true; @@ -159,7 +159,7 @@ CV_IMPL int cvInitSystem( int argc, char** argv) return 0; } -CVWindow *cvGetWindow(const char *name) { +static CVWindow *cvGetWindow(const char *name) { //cout << "cvGetWindow" << endl; NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init]; NSString *cvname = [NSString stringWithFormat:@"%s", name]; @@ -614,6 +614,7 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value ) @synthesize status; - (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags { + (void)event; //cout << "cvSendMouseEvent" << endl; NSPoint mp = [NSEvent mouseLocation]; //NSRect visible = [[self contentView] frame]; @@ -924,6 +925,7 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value ) } - (void)sliderChanged:(NSNotification *)notification { + (void)notification; int pos = [slider intValue]; if(value) *value = pos; diff --git a/modules/legacy/src/_kdtree.hpp b/modules/legacy/src/_kdtree.hpp index ba9097a44..48925eeda 100644 --- a/modules/legacy/src/_kdtree.hpp +++ b/modules/legacy/src/_kdtree.hpp @@ -169,7 +169,7 @@ private: __instype *split = median; for (; split != last && deref(ctor(*split), dim) == - deref(ctor(*median), dim); ++split); + deref(ctor(*median), dim); ++split) {} if (split == last) { // leaf int nexti = -1; @@ -387,9 +387,8 @@ public: // ret_nn_pq is an array containing the (at most) k nearest neighbors // (see bbf_nn structure def above). template < class __desctype > - int find_nn_bbf(const __desctype * d, - int k, int emax, - bbf_nn_pqueue & ret_nn_pq) const { + int find_nn_bbf(const __desctype * d, int k, int emax, bbf_nn_pqueue & ret_nn_pq) const + { assert(k > 0); ret_nn_pq.clear(); @@ -400,7 +399,8 @@ public: // iterate while queue non-empty and emax>0 tmp_pq.clear(); tmp_pq.push_back(bbf_node(root_node, 0)); - while (tmp_pq.size() && emax > 0) { + while (tmp_pq.size() && emax > 0) + { // from node nearest query point d, run to leaf std::pop_heap(tmp_pq.begin(), tmp_pq.end()); @@ -408,18 +408,17 @@ public: tmp_pq.erase(tmp_pq.end() - 1); int i; - for (i = bbf.node; - i != -1 && nodes[i].dim >= 0; - i = bbf_branch(i, d, tmp_pq)); + for (i = bbf.node; i != -1 && nodes[i].dim >= 0; i = bbf_branch(i, d, tmp_pq)) {} - if (i != -1) { + if (i != -1) + { - // add points in leaf/bin to ret_nn_pq - do { - bbf_new_nn(ret_nn_pq, k, d, nodes[i].value); - } while (-1 != (i = nodes[i].right)); + // add points in leaf/bin to ret_nn_pq + do { + bbf_new_nn(ret_nn_pq, k, d, nodes[i].value); + } while (-1 != (i = nodes[i].right)); - --emax; + --emax; } } diff --git a/modules/legacy/src/dpstereo.cpp b/modules/legacy/src/dpstereo.cpp index 1c6881e89..a55e1cafb 100644 --- a/modules/legacy/src/dpstereo.cpp +++ b/modules/legacy/src/dpstereo.cpp @@ -414,7 +414,7 @@ static void icvFindStereoCorrespondenceByBirchfieldDP( uchar* src1, uchar* src2, for( x = 1; x < imgW; x++ ) { i = x - 1; - for( ; x < imgW && dest[y*widthStep+x] == dest[y*widthStep+x-1]; x++ ); + for( ; x < imgW && dest[y*widthStep+x] == dest[y*widthStep+x-1]; x++ ) {} s = x - i; for( ; i < x; i++ ) { diff --git a/modules/legacy/src/testseq.cpp b/modules/legacy/src/testseq.cpp index 37e19f79f..d3521a5ae 100644 --- a/modules/legacy/src/testseq.cpp +++ b/modules/legacy/src/testseq.cpp @@ -633,7 +633,7 @@ static CvTestSeqElem* icvTestSeqReadElemOne(CvTestSeq_* pTS, CvFileStorage* fs, for(i0=0, i1=1; i1i0); @@ -779,7 +779,7 @@ static CvTestSeqElem* icvTestSeqReadElemAll(CvTestSeq_* pTS, CvFileStorage* fs, } /* Find last element: */ - for(pElemLast=pElemNew;pElemLast && pElemLast->next;pElemLast= pElemLast->next); + for(pElemLast=pElemNew;pElemLast && pElemLast->next;pElemLast= pElemLast->next) {} } /* Next element. */ } /* Read all element in sequence. */ @@ -842,7 +842,7 @@ CvTestSeq* cvCreateTestSeq(char* pConfigfile, char** videos, int numvideo, float else { CvTestSeqElem* p = NULL; - for(p=pTS->pElemList;p->next;p=p->next); + for(p=pTS->pElemList;p->next;p=p->next) {} p->next = pElemNew; } } /* Read all videos. */ From fbe0d6963c1d45660c913035c3c1f1e56ce70616 Mon Sep 17 00:00:00 2001 From: Vadim Pisarevsky Date: Mon, 22 Oct 2012 17:26:22 +0400 Subject: [PATCH 06/12] disabled several tests on Mac when no FFMPEG is used; disabled automatic table initialization in imgwarp in the case of MinGW --- modules/highgui/test/test_framecount.cpp | 2 +- modules/highgui/test/test_positioning.cpp | 2 +- modules/highgui/test/test_video_pos.cpp | 2 +- modules/imgproc/src/imgwarp.cpp | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/highgui/test/test_framecount.cpp b/modules/highgui/test/test_framecount.cpp index 7f8c36c00..80bcfafb7 100644 --- a/modules/highgui/test/test_framecount.cpp +++ b/modules/highgui/test/test_framecount.cpp @@ -109,6 +109,6 @@ void CV_FramecountTest::run(int) } } } -#if BUILD_WITH_VIDEO_INPUT_SUPPORT +#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined HAVE_FFMPEG TEST(Highgui_Video, framecount) {CV_FramecountTest test; test.safe_run();} #endif diff --git a/modules/highgui/test/test_positioning.cpp b/modules/highgui/test/test_positioning.cpp index f143e8a30..9f022ca9f 100644 --- a/modules/highgui/test/test_positioning.cpp +++ b/modules/highgui/test/test_positioning.cpp @@ -217,7 +217,7 @@ void CV_VideoRandomPositioningTest::run(int) run_test(RANDOM); } -#if BUILD_WITH_VIDEO_INPUT_SUPPORT +#if BUILD_WITH_VIDEO_INPUT_SUPPORT && defined HAVE_FFMPEG TEST (Highgui_Video, seek_progressive) { CV_VideoProgressivePositioningTest test; test.safe_run(); } TEST (Highgui_Video, seek_random) { CV_VideoRandomPositioningTest test; test.safe_run(); } #endif \ No newline at end of file diff --git a/modules/highgui/test/test_video_pos.cpp b/modules/highgui/test/test_video_pos.cpp index 92904f5df..ce0df40ff 100644 --- a/modules/highgui/test/test_video_pos.cpp +++ b/modules/highgui/test/test_video_pos.cpp @@ -173,6 +173,6 @@ public: Size framesize; }; -#if BUILD_WITH_VIDEO_INPUT_SUPPORT && BUILD_WITH_VIDEO_OUTPUT_SUPPORT +#if BUILD_WITH_VIDEO_INPUT_SUPPORT && BUILD_WITH_VIDEO_OUTPUT_SUPPORT && defined HAVE_FFMPEG TEST(Highgui_Video, seek_random_synthetic) { CV_PositioningTest test; test.safe_run(); } #endif diff --git a/modules/imgproc/src/imgwarp.cpp b/modules/imgproc/src/imgwarp.cpp index 6d9a98429..c2506590d 100644 --- a/modules/imgproc/src/imgwarp.cpp +++ b/modules/imgproc/src/imgwarp.cpp @@ -220,7 +220,7 @@ static const void* initInterTab2D( int method, bool fixpt ) return fixpt ? (const void*)itab : (const void*)tab; } - +#ifndef __MINGW32__ static bool initAllInterTab2D() { return initInterTab2D( INTER_LINEAR, false ) && @@ -232,6 +232,7 @@ static bool initAllInterTab2D() } static volatile bool doInitAllInterTab2D = initAllInterTab2D(); +#endif template struct Cast { From c13eb07d4789c3a128d5aef0c4fc0efc4f7b167a Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 23 Oct 2012 12:07:01 +0400 Subject: [PATCH 07/12] Fix argument parsing for old command line parser --- modules/ts/src/ts_perf.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ts/src/ts_perf.cpp b/modules/ts/src/ts_perf.cpp index e66cbe5be..25e81858e 100644 --- a/modules/ts/src/ts_perf.cpp +++ b/modules/ts/src/ts_perf.cpp @@ -16,7 +16,7 @@ const std::string command_line_keys = "{ |perf_force_samples |100 |force set maximum number of samples for all tests}" "{ |perf_seed |809564 |seed for random numbers generator}" "{ |perf_threads |-1 |the number of worker threads, if parallel execution is enabled}" - "{ |perf_write_sanity | |allow to create new records for sanity checks}" + "{ |perf_write_sanity |false |allow to create new records for sanity checks}" #ifdef ANDROID "{ |perf_time_limit |6.0 |default time limit for a single test (in seconds)}" "{ |perf_affinity_mask |0 |set affinity mask for the main thread}" @@ -25,7 +25,7 @@ const std::string command_line_keys = "{ |perf_time_limit |3.0 |default time limit for a single test (in seconds)}" #endif "{ |perf_max_deviation |1.0 |}" - "{h |help | |print help info}" + "{h |help |false |print help info}" #ifdef HAVE_CUDA "{ |perf_run_cpu |false |run GPU performance tests for analogical CPU functions}" "{ |perf_cuda_device |0 |run GPU test suite onto specific CUDA capable device}" From b45a870d9a3f856a4b0fe71caa903a6a4f5cda0d Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 23 Oct 2012 12:07:32 +0400 Subject: [PATCH 08/12] Limit 32S data in perf test for addWeighted to avoid integer overflow --- modules/core/perf/perf_addWeighted.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/core/perf/perf_addWeighted.cpp b/modules/core/perf/perf_addWeighted.cpp index 742b684be..82ca45a02 100644 --- a/modules/core/perf/perf_addWeighted.cpp +++ b/modules/core/perf/perf_addWeighted.cpp @@ -23,6 +23,13 @@ PERF_TEST_P(Size_MatType, addWeighted, TYPICAL_MATS_ADWEIGHTED) declare.in(src1, src2, dst, WARMUP_RNG).out(dst); + if (CV_MAT_DEPTH(type) == CV_32S) + { + //see ticket 1529: absdiff can be without saturation on 32S + src1 /= 8; + src2 /= 8; + } + TEST_CYCLE() cv::addWeighted( src1, alpha, src2, beta, gamma, dst, dst.type() ); SANITY_CHECK(dst); From 585f3bc3919132eba4e46c704eaed12158d59037 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 23 Oct 2012 12:13:39 +0400 Subject: [PATCH 09/12] Disable perf test for unstable solvePnPRansac --- modules/calib3d/perf/perf_pnp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/calib3d/perf/perf_pnp.cpp b/modules/calib3d/perf/perf_pnp.cpp index b32b96cae..44d390ef7 100644 --- a/modules/calib3d/perf/perf_pnp.cpp +++ b/modules/calib3d/perf/perf_pnp.cpp @@ -96,7 +96,7 @@ PERF_TEST(PointsNum_Algo, solveP3P) SANITY_CHECK(tvec, 1e-6); } -PERF_TEST_P(PointsNum, SolvePnPRansac, testing::Values(4, 3*9, 7*13)) +PERF_TEST_P(PointsNum, DISABLED_SolvePnPRansac, testing::Values(4, 3*9, 7*13)) { int count = GetParam(); From e64bb3654afd57eed978d735f113077fd79ca8ee Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 23 Oct 2012 15:28:44 +0400 Subject: [PATCH 10/12] Remove wrong assertion --- modules/core/src/matrix.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 6ef4d8dee..5ea21cf8a 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -2547,7 +2547,6 @@ public: data(_data), centers(_centers) { - CV_DbgAssert(centers.cols == data.cols); } void operator()( const BlockedRange& range ) const From ed0064260008cff6c4a9ef5e03e6520f23aede20 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Tue, 23 Oct 2012 15:52:11 +0400 Subject: [PATCH 11/12] Force build with -O2 instead of -O3 on 32-bit linux --- cmake/OpenCVCompilerOptions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake index e84957b75..8981f4b84 100644 --- a/cmake/OpenCVCompilerOptions.cmake +++ b/cmake/OpenCVCompilerOptions.cmake @@ -1,4 +1,4 @@ -if(MINGW) +if(MINGW OR (X86 AND UNIX AND NOT APPLE)) # mingw compiler is known to produce unstable SSE code with -O3 hence we are trying to use -O2 instead if(CMAKE_COMPILER_IS_GNUCXX) foreach(flags CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_DEBUG) From e9ba5c225dcc19a8b3f24b9cde1e4d42c2ee9179 Mon Sep 17 00:00:00 2001 From: Daniil Osokin Date: Tue, 23 Oct 2012 15:14:40 +0400 Subject: [PATCH 12/12] extended perf test warpPerspectiveLarge --- modules/imgproc/perf/perf_warp.cpp | 60 +++++++++++++++++++----------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/modules/imgproc/perf/perf_warp.cpp b/modules/imgproc/perf/perf_warp.cpp index ccc3dde9e..1c321db0a 100644 --- a/modules/imgproc/perf/perf_warp.cpp +++ b/modules/imgproc/perf/perf_warp.cpp @@ -15,6 +15,7 @@ CV_ENUM(RemapMode, HALF_SIZE, UPSIDE_DOWN, REFLECTION_X, REFLECTION_BOTH) typedef TestBaseWithParam< tr1::tuple > TestWarpAffine; typedef TestBaseWithParam< tr1::tuple > TestWarpPerspective; +typedef TestBaseWithParam< tr1::tuple > TestWarpPerspectiveNear_t; typedef TestBaseWithParam< tr1::tuple > TestRemap; void update_map(const Mat& src, Mat& map_x, Mat& map_y, const int remapMode ); @@ -80,44 +81,59 @@ PERF_TEST_P( TestWarpPerspective, WarpPerspective, SANITY_CHECK(dst); } -PERF_TEST_P( TestWarpPerspective, WarpPerspectiveLarge, +PERF_TEST_P( TestWarpPerspectiveNear_t, WarpPerspectiveNear, Combine( - Values( sz3MP, sz5MP ), - ValuesIn( InterType::all() ), - ValuesIn( BorderMode::all() ) + Values( Size(176,144), Size(320,240), Size(352,288), Size(480,480), + Size(640,480), Size(704,576), Size(720,408), Size(720,480), + Size(720,576), Size(768,432), Size(800,448), Size(960,720), + Size(1024,768), Size(1280,720), Size(1280,960), Size(1360,720), + Size(1600,1200), Size(1920,1080), Size(2048,1536), Size(2592,1920), + Size(2592,1944), Size(3264,2448), Size(4096,3072), Size(4208,3120) ), + ValuesIn( InterType::all() ), + ValuesIn( BorderMode::all() ), + Values( CV_8UC1, CV_8UC4 ) + ) ) -) { - Size sz; - int borderMode, interType; - sz = get<0>(GetParam()); + Size size; + int borderMode, interType, type; + size = get<0>(GetParam()); borderMode = get<1>(GetParam()); interType = get<2>(GetParam()); + type = get<3>(GetParam()); - string resolution; - if (sz == sz3MP) - resolution = "3MP"; - else if (sz == sz5MP) - resolution = "5MP"; + Mat src, img = imread(getDataPath("cv/shared/5MP.png")); + + if( type == CV_8UC1 ) + { + cvtColor(img, src, COLOR_BGR2GRAY, 1); + } + else if( type == CV_8UC4 ) + { + cvtColor(img, src, COLOR_BGR2BGRA, 4); + } else + { FAIL(); + } - Mat src, img = imread(getDataPath("cv/shared/" + resolution + ".png")); - cvtColor(img, src, COLOR_BGR2BGRA, 4); + resize(src, src, size); - int shift = 103; - Mat srcVertices = (Mat_(1, 4) << Vec2f(0, 0), Vec2f(sz.width-1, 0), - Vec2f(sz.width-1, sz.height-1), Vec2f(0, sz.height-1)); - Mat dstVertices = (Mat_(1, 4) << Vec2f(0, shift), Vec2f(sz.width-shift/2, 0), - Vec2f(sz.width-shift, sz.height-shift), Vec2f(shift/2, sz.height-1)); + int shift = src.cols*0.04; + Mat srcVertices = (Mat_(1, 4) << Vec2f(0, 0), Vec2f(size.width-1, 0), + Vec2f(size.width-1, size.height-1), Vec2f(0, size.height-1)); + Mat dstVertices = (Mat_(1, 4) << Vec2f(0, shift), Vec2f(size.width-shift/2, 0), + Vec2f(size.width-shift, size.height-shift), Vec2f(shift/2, size.height-1)); Mat warpMat = getPerspectiveTransform(srcVertices, dstVertices); - Mat dst(sz, CV_8UC4); + Mat dst(size, type); declare.in(src).out(dst); TEST_CYCLE() - warpPerspective( src, dst, warpMat, sz, interType, borderMode, Scalar::all(150) ); + { + warpPerspective( src, dst, warpMat, size, interType, borderMode, Scalar::all(150) ); + } SANITY_CHECK(dst); }