我想用OpenMV做一个迷宫识别的代码,但是奈何实力不允许,不会写,先挖个坑,以后来填坑
二值化 + 识别圆形,画圈
# 颜色二值化滤波例子
#
# 这个脚本展示了二值图像滤波。
# 您可以传递二进制任意的阈值来分割图像。
import sensor, image, time
sensor.reset()
sensor.set_framesize(sensor.QVGA)
sensor.set_pixformat(sensor.RGB565)
sensor.set_windowing(35,35,220,200)
#设置颜色阈值,如果是rgb图像,六个数字分别为(minL, maxL, minA, maxA, minB, maxB);
#如果是灰度图,则只需设置(min, max)两个数字即可。
Black_threshold = (5, 48, 91, -32, 44, -1) #二值化 黑色颜色阈值
Circle_threshold = (100, 94, 2, -11, 1, -11) #二值化之后的白色圆形颜色阈值
sensor.skip_frames(time = 2000)
clock = time.clock()
#使用工具 - >机器视觉 - >阈值编辑器选择更好的阈值。
while(True):
#测试黑色阈值
clock.tick()
img = sensor.snapshot() #图像
img.binary([Black_threshold]) #二值化
#Circle_Color_Block = img.find_blobs([Circle_threshold]) #寻找圆形色块
#找圆形
for c in img.find_circles(threshold = 4000, x_margin = 10, y_margin = 10, r_margin = 10,
r_min = 3, r_max = 6, r_step = 2):
img.draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0))
#for r in img.find_rects(threshold = 8000):
#img.draw_rectangle(r.rect(), color = (255, 255, 0))
##i = r.x() + (int)(r.w()/2)
#img.draw_circle(r.x() + (int)(r.w()/2), r.y() + (int)(r.h()/2), 5, color = (0, 255, 255))
print(clock.fps())
#image.binary(thresholds, invert=False)此函数将在thresholds内的
#图像部分的全部像素变为1白,将在阈值外的部分全部像素变为0黑。invert将图像
#的0 1(黑 白)进行反转,默认为false不反转。