Commit 4f82b358 authored by Vadim Pisarevsky's avatar Vadim Pisarevsky

Merge pull request #3480 from mshabunin:python-test-24

parents 3481c1ca 3212dd54
...@@ -13,6 +13,7 @@ import os ...@@ -13,6 +13,7 @@ import os
import getopt import getopt
import operator import operator
import functools import functools
import argparse
import cv2.cv as cv import cv2.cv as cv
...@@ -20,6 +21,15 @@ from test2 import * ...@@ -20,6 +21,15 @@ from test2 import *
class OpenCVTests(unittest.TestCase): 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 ] 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 = [ mat_types = [
...@@ -73,12 +83,28 @@ class OpenCVTests(unittest.TestCase): ...@@ -73,12 +83,28 @@ class OpenCVTests(unittest.TestCase):
def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR): def get_sample(self, filename, iscolor = cv.CV_LOAD_IMAGE_COLOR):
if not filename in self.image_cache: if not filename in self.image_cache:
filedata = urllib.urlopen("https://raw.github.com/Itseez/opencv/2.4/" + filename).read() 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) imagefiledata = cv.CreateMatHeader(1, len(filedata), cv.CV_8UC1)
cv.SetData(imagefiledata, filedata, len(filedata)) cv.SetData(imagefiledata, filedata, len(filedata))
self.image_cache[filename] = cv.DecodeImageM(imagefiledata, iscolor) self.image_cache[filename] = cv.DecodeImageM(imagefiledata, iscolor)
return self.image_cache[filename] 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): def setUp(self):
self.image_cache = {} self.image_cache = {}
...@@ -1646,9 +1672,8 @@ class AreaTests(OpenCVTests): ...@@ -1646,9 +1672,8 @@ class AreaTests(OpenCVTests):
cv.SetData(imagefiledata, filedata, len(filedata)) cv.SetData(imagefiledata, filedata, len(filedata))
return cv.DecodeImageM(imagefiledata) return cv.DecodeImageM(imagefiledata)
if (not os.path.isfile("camera_calibration.tar.gz")): filename = self.get_data("camera_calibration.tar.gz", OpenCVTests.dataUrl)
urllib.urlretrieve("http://docs.opencv.org/data/camera_calibration.tar.gz", "camera_calibration.tar.gz") tf = tarfile.open(filename)
tf = tarfile.open("camera_calibration.tar.gz")
num_x_ints = 8 num_x_ints = 8
num_y_ints = 6 num_y_ints = 6
...@@ -2204,9 +2229,20 @@ class DocumentFragmentTests(OpenCVTests): ...@@ -2204,9 +2229,20 @@ class DocumentFragmentTests(OpenCVTests):
self.assertNotEqual(self.hashimg(h1), self.hashimg(h2)) self.assertNotEqual(self.hashimg(h1), self.hashimg(h2))
if __name__ == '__main__': if __name__ == '__main__':
parser = argparse.ArgumentParser(description='run OpenCV python tests')
parser.add_argument('--repo', help='use sample image files from local git repository (path to folder), '
'if not set, samples will be downloaded from github.com')
parser.add_argument('--data', help='use data files from local folder (path to folder), '
'if not set, data files will be downloaded from docs.opencv.org')
args, other = parser.parse_known_args()
print "testing", cv.__version__ print "testing", cv.__version__
print "Local repo path:", args.repo
print "Local data path:", args.data
OpenCVTests.repoPath = args.repo
OpenCVTests.dataPath = args.data
random.seed(0) random.seed(0)
unittest.main() unit_argv = [sys.argv[0]] + other;
unittest.main(argv=unit_argv)
# optlist, args = getopt.getopt(sys.argv[1:], 'l:rd') # optlist, args = getopt.getopt(sys.argv[1:], 'l:rd')
# loops = 1 # loops = 1
# shuffle = 0 # shuffle = 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment