def _test_remove_reddot(self, img): f0 = CalibrateRedDotFilter() f1 = SeparateObjectFilter() meta_img = MetaImg(img, {}) f0.filter(meta_img) f1.filter(meta_img) self.assertLess(np.sum(meta_img.meta['mask']) / 255, 40)
def test_no_red_dot(self): im3 = cv2.imread('tests/lena.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = SeparateObjectFilter() meta_img = MetaImg(im3, {}) try: f1.filter(meta_img) except: self.fail()
def test_measure(self): im3 = cv2.imread('tests/reddot_seed.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = CalibrateRedDotFilter({'dims': (4, 4), 'dot_diameter_in_mm': 5}) f2 = SeparateObjectFilter() meta_img = MetaImg(im3, {}) f1(meta_img) f2(meta_img) print meta_img.meta['ellipsis']
def test_speed(self): im3 = cv2.imread('tests/reddot_seed.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = SeparateObjectFilter() t = time() for i in xrange(5): meta_img = MetaImg(im3, {}) f1.filter(meta_img) t2 = time() self.assertLess(t2 - t, 5)
def __init__(self, video_src=0): self.cam = cap = cv2.VideoCapture(video_src) # cap.set(cv2.cv.CV_CAP_PROP_FRAME_WIDTH, 320) # cap.set(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT, 200) ret, self.frame = self.cam.read() cv2.namedWindow('win') self.calib_filter = CalibrateChessFilter({ 'dims': (4, 4), 'square_size_in_mm': 5 }) self.sep_filter = SeparateObjectFilter()
def full_fitlers_test(self): im3 = cv2.imread('tests/reddot_seed.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = CalibrateRedDotFilter({'dims': (4, 4), 'dot_diameter_in_mm': 5}) f2 = SeparateObjectFilter() t = time() for i in xrange(5): meta_img = MetaImg(np.array(im3), {}) f1.filter(meta_img) f2.filter(meta_img) t2 = time() self.assertLess(t2 - t, 5) #at least 2 frames for second
def test_bg_probability(self): im3 = cv2.imread('tests/reddot_seed.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = SeparateObjectFilter() meta_img = MetaImg(im3, {}) hsv = cv2.cvtColor(meta_img.img, cv.CV_BGR2HSV) mask = f1._create_bg_probe_mask(im3) probab = f1._bg_probability(mask, hsv[:, :, 2]) _, ret = cv2.threshold((probab * 10000).astype(np.uint8), 70, 255, cv2.THRESH_BINARY_INV) cv2.imshow('asd1', ret) probab += f1._bg_probability(mask, hsv[:, :, 0]) probab *= 10000 probab = probab.astype(np.uint8) print np.max(probab) _, ret = cv2.threshold(probab, 140, 255, cv2.THRESH_BINARY_INV)
def __init__(self, video_widget, conf): super(VideoThread, self).__init__() self.cam_num = conf.get('cam_num', 0) self.red_dot_diameter = conf.get('dot_diameter_in_mm', 1) self._frame_count = 0 self._show_detail = False self._killed = False self._show_mask = False self._prev_grab_res = (1280, 1024) self._snap_grab_res = (2592, 1944) self.video_widget = video_widget self._cam_mutex = Lock() self.calib_filter = CalibrateRedDotFilter({'dot_diameter_in_mm': self.red_dot_diameter}) self.sep_filter = SeparateObjectFilter() self._timer = QTimer() self._timer.timeout.connect(self.on_frame)
def test_elipse(self): im3 = cv2.imread('tests/reddot_seed.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = SeparateObjectFilter() meta_img = MetaImg(im3, {}) f1.filter(meta_img) self.assertTrue(meta_img.meta.get('ellipsis', False))
def test_probe_mask(self): f = SeparateObjectFilter() im3 = cv2.imread('tests/reddot.jpg', cv.CV_LOAD_IMAGE_COLOR) mask = f._create_bg_probe_mask(im3) self.assertGreater(np.sum(mask) / 255, 400)
def test_no_object(self): im3 = cv2.imread('tests/no_object.jpg', cv.CV_LOAD_IMAGE_COLOR) f1 = SeparateObjectFilter() meta_img = MetaImg(im3, {}) # try: f1.filter(meta_img)