From 7ea1bf3cf02c92955f0407c82097d1cabf00f2cb Mon Sep 17 00:00:00 2001 From: Roman Donchenko Date: Tue, 20 May 2014 13:54:00 +0400 Subject: [PATCH 1/4] Fixed several problems found by PVS-Studio. This fixes all problems from the article "Checking OpenCV with PVS-Studio" that are not already fixed and are not in 3rdparty or the legacy module. The problems fixed are two instances of useless code and one instance of unspecified behavior (right-shifting a negative number). --- modules/core/test/test_math.cpp | 2 +- modules/imgproc/src/contours.cpp | 2 +- modules/imgproc/test/test_imgwarp_strict.cpp | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/modules/core/test/test_math.cpp b/modules/core/test/test_math.cpp index 5dec97e8c..d2c069530 100644 --- a/modules/core/test/test_math.cpp +++ b/modules/core/test/test_math.cpp @@ -1353,7 +1353,7 @@ void Core_DetTest::get_test_array_types_and_sizes( int test_case_idx, vector> 1; + new_mask = INT_MIN / 2; } for( ; y < height; y++, img += step ) diff --git a/modules/imgproc/test/test_imgwarp_strict.cpp b/modules/imgproc/test/test_imgwarp_strict.cpp index 064ba9356..c122d0b58 100644 --- a/modules/imgproc/test/test_imgwarp_strict.cpp +++ b/modules/imgproc/test/test_imgwarp_strict.cpp @@ -557,7 +557,6 @@ void CV_Resize_Test::resize_1d(const Mat& _src, Mat& _dst, int dy, const dim& _d xyD[r] = 0; for (int k = 0; k < ksize; ++k) xyD[r] += w[k] * xyS[k * cn + r]; - xyD[r] = xyD[r]; } } } From 766600529b9822305f9f5cb7b9dea5998520c9f6 Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 26 May 2014 01:19:16 +0400 Subject: [PATCH 2/4] run.py: added --android_env parameter --- modules/ts/misc/run.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/modules/ts/misc/run.py b/modules/ts/misc/run.py index 194ab4b50..603484c6e 100755 --- a/modules/ts/misc/run.py +++ b/modules/ts/misc/run.py @@ -740,7 +740,14 @@ class TestSuite(object): print >> _stderr, "Run command:", command if self.setUp: self.setUp() - Popen(self.adb + ["shell", "export OPENCV_TEST_DATA_PATH=" + self.options.test_data_path + "&& cd " + andoidcwd + "&& ./" + command], stdout=_stdout, stderr=_stderr).wait() + env = self.options.android_env.copy() + env['OPENCV_TEST_DATA_PATH'] = self.options.test_data_path + for k, v in os.environ.items(): + if k.startswith('OPENCV') and not k in env: + env[k] = v + print >> _stderr, "Android environment variables: \n", '\n'.join([' %s=%s' % (k, v) for k, v in env.items()]) + commandPrefix = ''.join(['export %s=%s && ' % (k, v) for k, v in env.items()]) + Popen(self.adb + ["shell", commandPrefix + "cd " + andoidcwd + "&& ./" + command], stdout=_stdout, stderr=_stderr).wait() if self.tearDown: self.tearDown() # try get log @@ -852,6 +859,7 @@ if __name__ == "__main__": parser.add_option("-a", "--accuracy", dest="accuracy", help="look for accuracy tests instead of performance tests", action="store_true", default=False) parser.add_option("-l", "--longname", dest="useLongNames", action="store_true", help="generate log files with long names", default=False) parser.add_option("", "--android_test_data_path", dest="test_data_path", help="OPENCV_TEST_DATA_PATH for Android run", metavar="PATH", default="/sdcard/opencv_testdata/") + parser.add_option("", "--android_env", dest="android_env_array", help="Environment variable for Android run (NAME=VALUE)", action='append') parser.add_option("", "--configuration", dest="configuration", help="force Debug or Release configuration", metavar="CFG", default="") parser.add_option("", "--serial", dest="adb_serial", help="Android: directs command to the USB device or emulator with the given serial number", metavar="serial number", default="") parser.add_option("", "--package", dest="junit_package", help="Android: run jUnit tests for specified package", metavar="package", default="") @@ -872,6 +880,12 @@ if __name__ == "__main__": print >> sys.stderr, "Usage:", os.path.basename(sys.argv[0]), "[options] [build_path]" exit(1) + options.android_env = {} + if options.android_env_array: + for entry in options.android_env_array: + k, v = entry.split("=", 1) + options.android_env[k] = v + tests = [s.strip() for s in options.tests.split(",") if s] if len(tests) != 1 or len(run_args) != 1: From e6f69058689693b399f7fea717fb96f32c6841cd Mon Sep 17 00:00:00 2001 From: Alexander Alekhin Date: Mon, 26 May 2014 14:32:52 +0400 Subject: [PATCH 3/4] run.py: propagate OPENCV* env variables only with --android_propagate_opencv_env flag --- modules/ts/misc/run.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/ts/misc/run.py b/modules/ts/misc/run.py index 603484c6e..19ab2ab7f 100755 --- a/modules/ts/misc/run.py +++ b/modules/ts/misc/run.py @@ -742,9 +742,10 @@ class TestSuite(object): self.setUp() env = self.options.android_env.copy() env['OPENCV_TEST_DATA_PATH'] = self.options.test_data_path - for k, v in os.environ.items(): - if k.startswith('OPENCV') and not k in env: - env[k] = v + if self.options.android_propagate_opencv_env: + for k, v in os.environ.items(): + if k.startswith('OPENCV') and not k in env: + env[k] = v print >> _stderr, "Android environment variables: \n", '\n'.join([' %s=%s' % (k, v) for k, v in env.items()]) commandPrefix = ''.join(['export %s=%s && ' % (k, v) for k, v in env.items()]) Popen(self.adb + ["shell", commandPrefix + "cd " + andoidcwd + "&& ./" + command], stdout=_stdout, stderr=_stderr).wait() @@ -860,6 +861,7 @@ if __name__ == "__main__": parser.add_option("-l", "--longname", dest="useLongNames", action="store_true", help="generate log files with long names", default=False) parser.add_option("", "--android_test_data_path", dest="test_data_path", help="OPENCV_TEST_DATA_PATH for Android run", metavar="PATH", default="/sdcard/opencv_testdata/") parser.add_option("", "--android_env", dest="android_env_array", help="Environment variable for Android run (NAME=VALUE)", action='append') + parser.add_option("", "--android_propagate_opencv_env", dest="android_propagate_opencv_env", help="Propagate OPENCV* environment variables for Android run", action="store_true", default=False) parser.add_option("", "--configuration", dest="configuration", help="force Debug or Release configuration", metavar="CFG", default="") parser.add_option("", "--serial", dest="adb_serial", help="Android: directs command to the USB device or emulator with the given serial number", metavar="serial number", default="") parser.add_option("", "--package", dest="junit_package", help="Android: run jUnit tests for specified package", metavar="package", default="") From 2bacd8b702bbefee1bbe415b9bdcb484881071fc Mon Sep 17 00:00:00 2001 From: berak Date: Wed, 28 May 2014 10:37:16 +0200 Subject: [PATCH 4/4] 2 fixed unassigned reshapes in em (#3674) --- modules/ml/src/em.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/ml/src/em.cpp b/modules/ml/src/em.cpp index 12c720dcf..34426a197 100644 --- a/modules/ml/src/em.cpp +++ b/modules/ml/src/em.cpp @@ -135,7 +135,7 @@ Vec2d EM::predict(InputArray _sample, OutputArray _probs) const sample.convertTo(tmp, CV_64FC1); sample = tmp; } - sample.reshape(1, 1); + sample = sample.reshape(1, 1); Mat probs; if( _probs.needed() ) @@ -266,7 +266,7 @@ void EM::setTrainData(int startStep, const Mat& samples, if(weights0 && (startStep == EM::START_E_STEP && covs0)) { weights0->convertTo(weights, CV_64FC1); - weights.reshape(1,1); + weights = weights.reshape(1,1); preprocessProbability(weights); }