Finishes simple_region_growing insertion

Some errors corrected in function code.
Adds "real life" tests with an image an non zero pixels count.
Examples to be added soon, with mouse value operations. 



Signed-off-by: Julien Lengrand-Lambert <julien@lengrandlambert.fr>
This commit is contained in:
Julien Lengrand-Lambert
2011-11-27 21:10:06 +01:00
parent 1304b62f6e
commit 2a6dc49ff3
3 changed files with 11 additions and 6 deletions

BIN
tippy/data/gnu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@@ -8,6 +8,7 @@ Created on Nov 26, 2011
''' '''
import sys import sys
import cv import cv
import numpy
def simple_region_growing(img, seed, threshold=1): def simple_region_growing(img, seed, threshold=1):
""" """
@@ -31,7 +32,7 @@ def simple_region_growing(img, seed, threshold=1):
raise ValueError("(%s) Positive value expected!" % (sys._getframe().f_code.co_name)) raise ValueError("(%s) Positive value expected!" % (sys._getframe().f_code.co_name))
# seed tests # seed tests
if not((isinstance(seed, tuple)) and (len(seed) is 2) ) : if not((isinstance(seed, tuple)) and (len(seed) is 2) ) :
raise ValueError("(%s) (x, y) variable expected!" % (sys._getframe().f_code.co_name)) raise TypeError("(%s) (x, y) variable expected!" % (sys._getframe().f_code.co_name))
dims = cv.GetSize(img) dims = cv.GetSize(img)
if (seed[0] or seed[1] ) < 0 : if (seed[0] or seed[1] ) < 0 :
@@ -56,7 +57,7 @@ def simple_region_growing(img, seed, threshold=1):
cur_pix = [seed[0], seed[1]] cur_pix = [seed[0], seed[1]]
#Spreading #Spreading
while(dist<thres and size<pix_area): while(dist<threshold and size<pix_area):
#adding pixels #adding pixels
for j in range(4): for j in range(4):
#select new candidate #select new candidate

View File

@@ -20,10 +20,10 @@ class Test(unittest.TestCase):
self.img_3c = cv.LoadImage("../data/tippy.jpg", cv.CV_LOAD_IMAGE_COLOR) # 3 channel image self.img_3c = cv.LoadImage("../data/tippy.jpg", cv.CV_LOAD_IMAGE_COLOR) # 3 channel image
self.img_16s = cv.CreateImage((15, 15), cv.IPL_DEPTH_16S, 1) # Non 8 bits image self.img_16s = cv.CreateImage((15, 15), cv.IPL_DEPTH_16S, 1) # Non 8 bits image
self.fake_img = 10 # non Image self.fake_img = 10 # non Image
self.dims = cv.GetSize(self.img_1c) self.dims = cv.GetSize(self.img_1c)
self.neg_thres = -0 self.neg_thres = -10
self.bad_thres = "A" self.bad_thres = "A"
self.seed = (10, 10) self.seed = (10, 10)
@@ -53,10 +53,14 @@ class Test(unittest.TestCase):
self.assertRaises(TypeError, lambda: se.simple_region_growing(self.img_1c, self.bad_seed)) self.assertRaises(TypeError, lambda: se.simple_region_growing(self.img_1c, self.bad_seed))
self.assertRaises(TypeError, lambda: se.simple_region_growing(self.img_1c, self.long_seed)) self.assertRaises(TypeError, lambda: se.simple_region_growing(self.img_1c, self.long_seed))
# output test # output test
out_img = simple_region_growing(self.img_1c, self.seed) out_img = se.simple_region_growing(self.img_1c, self.seed)
self.assertEqual(out_img.depth, cv.IPL_DEPTH_8U) self.assertEqual(out_img.depth, cv.IPL_DEPTH_8U)
self.assertEqual(out_img.nChannels, 1) self.assertEqual(out_img.nChannels, 1)
self.assertEqual(cv.GetSize(out_img), cv.GetSize(self.img_1C)) self.assertEqual(cv.GetSize(out_img), cv.GetSize(self.img_1c))
# function result tests
img_gnu = cv.LoadImage("../data/gnu.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE) # 1 channel image
out_img = se.simple_region_growing(img_gnu, seed=(70, 106), threshold=20)
self.assertEqual(cv.CountNonZero(out_img), 584)
#if __name__ == "__main__": #if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName'] #import sys;sys.argv = ['', 'Test.testName']