示例#1
0
 def test_prosac(self):
     """
     改进抽样一致
     """
     Camera.reset()
     self.__last_frame = None
     print("PROSAC")
     for i in range(1, 30):
         start = time.clock()
         _, frame = Camera.get_frame()
         if self.__last_frame is None:
             self.__last_frame = frame
             continue
         img = cv2.absdiff(frame, self.__last_frame)
         self.__last_frame = frame
         img = cv2.GaussianBlur(img, (5, 5), 2.5)
         img = ImageUtils.morphology(img, cv2.MORPH_DILATE, 16)
         _, img = ImageUtils.binary(img, threshold_type=cv2.THRESH_OTSU)
         # 计算特征点
         key_points, descriptors = ImageUtils.get_key_points(frame, img)
         matches = ImageUtils.knn_match(self.__target_descriptors,
                                        descriptors)
         if len(matches) > 0:
             # 匹配到合适的特征点
             points = ImageUtils.get_matches_points(key_points, matches)
             src_key_points = ImageUtils.get_matches_points(
                 self.__target_key_points, matches, 1)
             # PROSAC去除错误点
             _, mask = cv2.findHomography(src_key_points, points, cv2.RHO)
             if mask is not None:
                 points_after = points[mask.ravel() == 1]
                 end = time.clock()
                 print("%d\t%d\t%d\t%f" %
                       (i, len(points), len(points_after), end - start))
示例#2
0
 def test_erode(self):
     """
     腐蚀
     """
     ret = ImageUtils.morphology(self.__image, cv2.MORPH_ERODE, 2)
     _, ret = ImageUtils.binary(ret, threshold_type=cv2.THRESH_OTSU)
     cv2.imwrite("result/erode.jpg", ret)
示例#3
0
 def test_close(self):
     """
     闭运算
     """
     ret = ImageUtils.morphology(self.__image, cv2.MORPH_CLOSE, 8)
     _, ret = ImageUtils.binary(ret, threshold_type=cv2.THRESH_OTSU)
     cv2.imwrite("result/close.jpg", ret)
示例#4
0
 def test_dilate(self):
     """
     膨胀
     """
     ret = ImageUtils.morphology(self.__image, cv2.MORPH_DILATE, 2)
     _, ret = ImageUtils.binary(ret, threshold_type=cv2.THRESH_OTSU)
     cv2.imwrite("result/dilate.jpg", ret)