From d22b94757c62c594a0c1b78e9034869a35d33b99 Mon Sep 17 00:00:00 2001 From: Alexander Shishkov Date: Tue, 14 Jun 2011 13:58:02 +0000 Subject: [PATCH] fixed test_precornerdetect, test_findstereocorrespondence, test_calchist --- tests/python/test.py | 8 ++--- tests/python/test_functions.py | 61 ++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 4 deletions(-) create mode 100644 tests/python/test_functions.py diff --git a/tests/python/test.py b/tests/python/test.py index d94426960..9be4b16b0 100644 --- a/tests/python/test.py +++ b/tests/python/test.py @@ -2107,8 +2107,8 @@ class DocumentFragmentTests(OpenCVTests): sys.path.append("../doc/python_fragments") def test_precornerdetect(self): - from precornerdetect import precornerdetect - im = self.get_sample("samples/c/right01.jpg", 0) + from test_functions import precornerdetect + im = self.get_sample("samples/cpp/right01.jpg", 0) imf = cv.CreateMat(im.rows, im.cols, cv.CV_32FC1) cv.ConvertScale(im, imf) (r0,r1) = precornerdetect(imf) @@ -2117,7 +2117,7 @@ class DocumentFragmentTests(OpenCVTests): self.assertEqual(im.rows, r.rows) def test_findstereocorrespondence(self): - from findstereocorrespondence import findstereocorrespondence + from test_functions import findstereocorrespondence (l,r) = [self.get_sample("doc/pics/tsukuba_%s.png" % c, cv.CV_LOAD_IMAGE_GRAYSCALE) for c in "lr"] (disparity_left, disparity_right) = findstereocorrespondence(l, r) @@ -2127,7 +2127,7 @@ class DocumentFragmentTests(OpenCVTests): # self.snap(disparity_left_visual) def test_calchist(self): - from calchist import hs_histogram + from test_functions import hs_histogram i1 = self.get_sample("samples/c/lena.jpg") i2 = self.get_sample("doc/pics/building.jpg") i3 = cv.CloneMat(i1) diff --git a/tests/python/test_functions.py b/tests/python/test_functions.py new file mode 100644 index 000000000..047f0e8df --- /dev/null +++ b/tests/python/test_functions.py @@ -0,0 +1,61 @@ +import sys +import cv + +def hs_histogram(src): + # Convert to HSV + hsv = cv.CreateImage(cv.GetSize(src), 8, 3) + cv.CvtColor(src, hsv, cv.CV_BGR2HSV) + + # Extract the H and S planes + h_plane = cv.CreateMat(src.rows, src.cols, cv.CV_8UC1) + s_plane = cv.CreateMat(src.rows, src.cols, cv.CV_8UC1) + cv.Split(hsv, h_plane, s_plane, None, None) + planes = [h_plane, s_plane] + + h_bins = 30 + s_bins = 32 + hist_size = [h_bins, s_bins] + # hue varies from 0 (~0 deg red) to 180 (~360 deg red again */ + h_ranges = [0, 180] + # saturation varies from 0 (black-gray-white) to + # 255 (pure spectrum color) + s_ranges = [0, 255] + ranges = [h_ranges, s_ranges] + scale = 10 + hist = cv.CreateHist([h_bins, s_bins], cv.CV_HIST_ARRAY, ranges, 1) + cv.CalcHist([cv.GetImage(i) for i in planes], hist) + (_, max_value, _, _) = cv.GetMinMaxHistValue(hist) + + hist_img = cv.CreateImage((h_bins*scale, s_bins*scale), 8, 3) + + for h in range(h_bins): + for s in range(s_bins): + bin_val = cv.QueryHistValue_2D(hist, h, s) + intensity = cv.Round(bin_val * 255 / max_value) + cv.Rectangle(hist_img, + (h*scale, s*scale), + ((h+1)*scale - 1, (s+1)*scale - 1), + cv.RGB(intensity, intensity, intensity), + cv.CV_FILLED) + return hist_img + +def precornerdetect(image): + # assume that the image is floating-point + corners = cv.CloneMat(image) + cv.PreCornerDetect(image, corners, 3) + dilated_corners = cv.CloneMat(image) + cv.Dilate(corners, dilated_corners, None, 1) + corner_mask = cv.CreateMat(image.rows, image.cols, cv.CV_8UC1) + cv.Sub(corners, dilated_corners, corners) + cv.CmpS(corners, 0, corner_mask, cv.CV_CMP_GE) + return (corners, corner_mask) + +def findstereocorrespondence(image_left, image_right): + # image_left and image_right are the input 8-bit single-channel images + # from the left and the right cameras, respectively + (r, c) = (image_left.rows, image_left.cols) + disparity_left = cv.CreateMat(r, c, cv.CV_16S) + disparity_right = cv.CreateMat(r, c, cv.CV_16S) + state = cv.CreateStereoGCState(16, 2) + cv.FindStereoCorrespondenceGC(image_left, image_right, disparity_left, disparity_right, state, 0) + return (disparity_left, disparity_right)