请问我想最后显示整张影像,而不是img.mask_circle之后的蒙板影像,代码该怎么改一下?
-
import sensor, time, image, math sensor.reset() sensor.set_contrast(3) sensor.set_gainceiling(16) sensor.set_framesize(sensor.VGA) sensor.set_windowing((320, 240)) sensor.set_pixformat(sensor.GRAYSCALE) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False, value=100) #画出特征点 def draw_keypoints(img, kpts): if kpts: print(kpts) img.draw_keypoints(kpts) img = sensor.snapshot() time.sleep_ms(1000) kpts1 = None clock = time.clock() while (True): clock.tick() img = sensor.snapshot() if (kpts1 == None): #提取最开始的图像作为目标物体特征,kpts1保存目标物体的特征 kpts1 = img.find_keypoints(max_keypoints=150, threshold=10, scale_factor=1.2) draw_keypoints(img, kpts1) #画出此时的目标特征 else: kpts2 = img.find_keypoints(max_keypoints=150, threshold=10, normalized=True) if (kpts2): match = image.match_descriptor(kpts1, kpts2, threshold=85) if (match.count()>3): img.draw_cross(match.cx(), match.cy(), size=10) img.mask_circle([match.cx(), match.cy(), 50]) for c in img.find_circles(threshold = 3500, x_margin = 20, y_margin = 15, r_margin = 10,r_min = 30, r_max = 40, r_step = 2): img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0)) d = math.sqrt((c.x()-160)**2 + (c.y()-120)**2) print(c) print("distance %d" % d) print(kpts2, "matched:%d dt:%d"%(match.count(), match.theta())) #打印帧率。 print("FPS %f" % clock.fps())
-
如果是OpenMV 4 Plus,那么可以copy一个图像,这个不会显示。
注意:其他的硬件,内存可能会爆,比如OpenMV4 H7import sensor, time, image, math sensor.reset() sensor.set_contrast(3) sensor.set_gainceiling(16) sensor.set_framesize(sensor.VGA) sensor.set_windowing((320, 240)) sensor.set_pixformat(sensor.GRAYSCALE) sensor.skip_frames(time = 2000) sensor.set_auto_gain(False, value=100) #画出特征点 def draw_keypoints(img, kpts): if kpts: print(kpts) img.draw_keypoints(kpts) img = sensor.snapshot() time.sleep_ms(1000) kpts1 = None clock = time.clock() while (True): clock.tick() img = sensor.snapshot() if (kpts1 == None): #提取最开始的图像作为目标物体特征,kpts1保存目标物体的特征 kpts1 = img.find_keypoints(max_keypoints=150, threshold=10, scale_factor=1.2) draw_keypoints(img, kpts1) #画出此时的目标特征 else: kpts2 = img.find_keypoints(max_keypoints=150, threshold=10, normalized=True) if (kpts2): match = image.match_descriptor(kpts1, kpts2, threshold=85) if (match.count()>3): img.draw_cross(match.cx(), match.cy(), size=10) img2 = img.copy() img2.mask_circle([match.cx(), match.cy(), 50]) for c in img2.find_circles(threshold = 3500, x_margin = 20, y_margin = 15, r_margin = 10,r_min = 30, r_max = 40, r_step = 2): img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0)) d = math.sqrt((c.x()-160)**2 + (c.y()-120)**2) print(c) print("distance %d" % d) print(kpts2, "matched:%d dt:%d"%(match.count(), match.theta())) #打印帧率。 print("FPS %f" % clock.fps())