我想用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不反转。