From 70bc268c1ae1a3e2d598fd81298e41f7f4808025 Mon Sep 17 00:00:00 2001 From: Maksim Shabunin Date: Mon, 11 Apr 2016 18:45:14 +0300 Subject: [PATCH] Fixed problem with nonfree python test: could not find local test images --- .../python/test/nonfree_tests/nonfree_surf.py | 2 +- modules/python/test/test.py | 109 +----------------- modules/python/test/tests_common.py | 107 ++++++++++++++++- 3 files changed, 109 insertions(+), 109 deletions(-) diff --git a/modules/python/test/nonfree_tests/nonfree_surf.py b/modules/python/test/nonfree_tests/nonfree_surf.py index 9ae14b221d..6f50ed6969 100644 --- a/modules/python/test/nonfree_tests/nonfree_surf.py +++ b/modules/python/test/nonfree_tests/nonfree_surf.py @@ -6,7 +6,7 @@ import numpy as np import cv2 import cv2.cv as cv -from test import OpenCVTests +from tests_common import OpenCVTests class NonFreeFunctionTests(OpenCVTests): diff --git a/modules/python/test/test.py b/modules/python/test/test.py index 36bc039833..e5fd8ea059 100755 --- a/modules/python/test/test.py +++ b/modules/python/test/test.py @@ -17,119 +17,14 @@ import argparse import cv2.cv as cv -from test2 import * - -class OpenCVTests(unittest.TestCase): - - # path to local repository folder containing 'samples' folder - repoPath = None - # github repository url - repoUrl = 'https://raw.github.com/Itseez/opencv/2.4' - # path to local folder containing 'camera_calibration.tar.gz' - dataPath = None - # data url - dataUrl = 'http://docs.opencv.org/data' - - depths = [ cv.IPL_DEPTH_8U, cv.IPL_DEPTH_8S, cv.IPL_DEPTH_16U, cv.IPL_DEPTH_16S, cv.IPL_DEPTH_32S, cv.IPL_DEPTH_32F, cv.IPL_DEPTH_64F ] - - mat_types = [ - cv.CV_8UC1, - cv.CV_8UC2, - cv.CV_8UC3, - cv.CV_8UC4, - cv.CV_8SC1, - cv.CV_8SC2, - cv.CV_8SC3, - cv.CV_8SC4, - cv.CV_16UC1, - cv.CV_16UC2, - cv.CV_16UC3, - cv.CV_16UC4, - cv.CV_16SC1, - cv.CV_16SC2, - cv.CV_16SC3, - cv.CV_16SC4, - cv.CV_32SC1, - cv.CV_32SC2, - cv.CV_32SC3, - cv.CV_32SC4, - cv.CV_32FC1, - cv.CV_32FC2, - cv.CV_32FC3, - cv.CV_32FC4, - cv.CV_64FC1, - cv.CV_64FC2, - cv.CV_64FC3, - cv.CV_64FC4, - ] - mat_types_single = [ - cv.CV_8UC1, - cv.CV_8SC1, - cv.CV_16UC1, - cv.CV_16SC1, - cv.CV_32SC1, - cv.CV_32FC1, - cv.CV_64FC1, - ] - - def depthsize(self, d): - return { cv.IPL_DEPTH_8U : 1, - cv.IPL_DEPTH_8S : 1, - cv.IPL_DEPTH_16U : 2, - cv.IPL_DEPTH_16S : 2, - cv.IPL_DEPTH_32S : 4, - cv.IPL_DEPTH_32F : 4, - cv.IPL_DEPTH_64F : 8 }[d] - - def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR): - if not filename in self.image_cache: - filedata = None - if OpenCVTests.repoPath is not None: - candidate = OpenCVTests.repoPath + '/' + filename - if os.path.isfile(candidate): - with open(candidate, 'rb') as f: - filedata = f.read() - if filedata is None: - filedata = urllib.urlopen(OpenCVTests.repoUrl + '/' + filename).read() - imagefiledata = cv.CreateMatHeader(1, len(filedata), cv.CV_8UC1) - cv.SetData(imagefiledata, filedata, len(filedata)) - self.image_cache[filename] = cv.DecodeImageM(imagefiledata, iscolor) - return self.image_cache[filename] - - def get_data(self, filename, urlbase): - if (not os.path.isfile(filename)): - if OpenCVTests.dataPath is not None: - candidate = OpenCVTests.dataPath + '/' + filename - if os.path.isfile(candidate): - return candidate - urllib.urlretrieve(urlbase + '/' + filename, filename) - return filename - - def setUp(self): - self.image_cache = {} - - def snap(self, img): - self.snapL([img]) - - def snapL(self, L): - for i,img in enumerate(L): - cv.NamedWindow("snap-%d" % i, 1) - cv.ShowImage("snap-%d" % i, img) - cv.WaitKey() - cv.DestroyAllWindows() - - def hashimg(self, im): - """ Compute a hash for an image, useful for image comparisons """ - return hashlib.md5(im.tostring()).digest() - -#import new OpenCV tests(do we really need old ones in this case) -from tests_common import NewOpenCVTests +from tests_common import OpenCVTests, NewOpenCVTests basedir = os.path.abspath(os.path.dirname(__file__)) def load_tests(loader, tests, pattern): tests.addTests(loader.discover(basedir, pattern='nonfree_*.py')) tests.addTests(loader.discover(basedir, pattern='test_*.py')) + tests.addTests(loader.discover(basedir, pattern='test2.py')) return tests # Tests to run first; check the handful of basic operations that the later tests rely on diff --git a/modules/python/test/tests_common.py b/modules/python/test/tests_common.py index 67b5bea2f7..a32f2889c2 100644 --- a/modules/python/test/tests_common.py +++ b/modules/python/test/tests_common.py @@ -8,6 +8,7 @@ import hashlib import os import numpy as np import cv2 +import cv2.cv as cv # Python 3 moved urlopen to urllib.requests try: @@ -15,6 +16,110 @@ try: except ImportError: from urllib import urlopen +class OpenCVTests(unittest.TestCase): + + # path to local repository folder containing 'samples' folder + repoPath = None + # github repository url + repoUrl = 'https://raw.github.com/Itseez/opencv/2.4' + # path to local folder containing 'camera_calibration.tar.gz' + dataPath = None + # data url + dataUrl = 'http://docs.opencv.org/data' + + depths = [ cv.IPL_DEPTH_8U, cv.IPL_DEPTH_8S, cv.IPL_DEPTH_16U, cv.IPL_DEPTH_16S, cv.IPL_DEPTH_32S, cv.IPL_DEPTH_32F, cv.IPL_DEPTH_64F ] + + mat_types = [ + cv.CV_8UC1, + cv.CV_8UC2, + cv.CV_8UC3, + cv.CV_8UC4, + cv.CV_8SC1, + cv.CV_8SC2, + cv.CV_8SC3, + cv.CV_8SC4, + cv.CV_16UC1, + cv.CV_16UC2, + cv.CV_16UC3, + cv.CV_16UC4, + cv.CV_16SC1, + cv.CV_16SC2, + cv.CV_16SC3, + cv.CV_16SC4, + cv.CV_32SC1, + cv.CV_32SC2, + cv.CV_32SC3, + cv.CV_32SC4, + cv.CV_32FC1, + cv.CV_32FC2, + cv.CV_32FC3, + cv.CV_32FC4, + cv.CV_64FC1, + cv.CV_64FC2, + cv.CV_64FC3, + cv.CV_64FC4, + ] + mat_types_single = [ + cv.CV_8UC1, + cv.CV_8SC1, + cv.CV_16UC1, + cv.CV_16SC1, + cv.CV_32SC1, + cv.CV_32FC1, + cv.CV_64FC1, + ] + + def depthsize(self, d): + return { cv.IPL_DEPTH_8U : 1, + cv.IPL_DEPTH_8S : 1, + cv.IPL_DEPTH_16U : 2, + cv.IPL_DEPTH_16S : 2, + cv.IPL_DEPTH_32S : 4, + cv.IPL_DEPTH_32F : 4, + cv.IPL_DEPTH_64F : 8 }[d] + + def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR): + if not filename in self.image_cache: + filedata = None + if OpenCVTests.repoPath is not None: + candidate = OpenCVTests.repoPath + '/' + filename + if os.path.isfile(candidate): + with open(candidate, 'rb') as f: + filedata = f.read() + if filedata is None: + filedata = urllib.urlopen(OpenCVTests.repoUrl + '/' + filename).read() + imagefiledata = cv.CreateMatHeader(1, len(filedata), cv.CV_8UC1) + cv.SetData(imagefiledata, filedata, len(filedata)) + self.image_cache[filename] = cv.DecodeImageM(imagefiledata, iscolor) + return self.image_cache[filename] + + def get_data(self, filename, urlbase): + if (not os.path.isfile(filename)): + if OpenCVTests.dataPath is not None: + candidate = OpenCVTests.dataPath + '/' + filename + if os.path.isfile(candidate): + return candidate + urllib.urlretrieve(urlbase + '/' + filename, filename) + return filename + + def setUp(self): + self.image_cache = {} + + def snap(self, img): + self.snapL([img]) + + def snapL(self, L): + for i,img in enumerate(L): + cv.NamedWindow("snap-%d" % i, 1) + cv.ShowImage("snap-%d" % i, img) + cv.WaitKey() + cv.DestroyAllWindows() + + def hashimg(self, im): + """ Compute a hash for an image, useful for image comparisons """ + return hashlib.md5(im.tostring()).digest() + + class NewOpenCVTests(unittest.TestCase): # path to local repository folder containing 'samples' folder @@ -77,4 +182,4 @@ def isPointInRect(p, rect): if rect[0] <= p[0] and rect[1] <=p[1] and p[0] <= rect[2] and p[1] <= rect[3]: return True else: - return False \ No newline at end of file + return False