边缘检测曲线坐标问题
-
边缘检测可以用线段提取得到直线线段的坐标,但针对曲线(弧形)要怎么获得线段的坐标呢?
困惑了很久请指导一下谢谢
-
OpenMV 没有检测弧线的功能。
-
-
此回复已被删除!
-
@yuan 您好,就针对上传的两幅图像,第一张是原图,第二张是我处理后的图。我使用了img.binary()进行图像分割以及一系列的图像处理。我想知道如何能将图中的曲线回归成一条直线,控制小车进行寻线.
-
先调整一下img.binary的阈值,使只有曲线道路变成白色。然后利用腐蚀函数,将道路腐蚀变细。然后调用线性回归函数。
腐蚀: http://book.openmv.cc/example/04-Image-Filters/erode-and-dilate.html
-
@yuan 请问腐蚀函数的threshold应该怎么设置呢?这个看了教程不太明白
“threshold用来设置去除相邻点的个数, threshold数值越大,被侵蚀掉的边缘点越多,边缘旁边白色杂点少;数值越小,被侵蚀掉的边缘点越少,边缘旁边的白色杂点越多。”这个只能用来平滑边缘,如何做到使得曲线变小呢?
-
@yuan
这样子输出都是“N/A”import sensor, image, time sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.skip_frames(time = 2000) clock = time.clock() Block =(63, 87, -7, 1, -8, -1) def find_max(blobs): max_size=0 for blob in blobs: if blob.pixels() > max_size: max_blob=blob max_size = blob.pixels() return max_blob while(True): clock.tick() img = image.Image("/RGB5.bmp", copy_to_fb=True) img.binary([Block]) img.erode(1,threshold=8) line = img.get_regression([Block],x_stride=1, y_stride=1, invert=False) if (line): img.draw_line(line.line(), color = 127) print("FPS %f, mag = %s" % (clock.fps(), str(line.magnitude()) if (line) else "N/A"))
-
我没有你的rgb5.bmp实在是复现不出来。建议先调试好img.binary([Block])
和img.erode(1,threshold=8)这两个函数,看一下图像是否变成了一条曲线,再进行后面的线性回归。