【发布时间】:2019-06-10 22:22:10
【问题描述】:
我正在尝试解决图像处理问题。
这是输入图像(图_1)由 3 种不同的颜色组成。原始图像没有红色或蓝色附加在后面表示需要处理的区域。
对 figure_1 应用边缘检测得到输出图像,其上只有边缘,没有颜色。
这里是代码
cv2.namedWindow('Result')
img = cv2.imread('img.png')
v1 = 20
v2 = 20
edges = cv2.Canny(img,v1,v2)
edges = cv2.cvtColor(edges,cv2.COLOR_GRAY2BGR)
res = np.hstack((img,edges))
edges = cv2.Canny(img,v1,v2)
edges = cv2.cvtColor(edges,cv2.COLOR_GRAY2BGR)
res = np.hstack((img,edges))
cv2.imshow('Result',res)
cv2.waitKey()
cv2.destroyAllWindows()
这是输出图像(图_2),没有填充红色或蓝色,这是需要的问题。
有没有办法根据python中的原始图像(图_1)用相应的颜色(红色和蓝色)填充图_2?
这段代码让我占了上风,我怎样才能分别得到area_red和area_blue,以便分别绘制不同的颜色?
这是此任务的最终目标,将原始光栅图像(图_1)转换为矢量图像并用相应颜色的线条填充。
【问题讨论】:
-
我猜你以后想使用
floodFill,所以我只想指出,你的输出图像中有不完美的线条。例如,查看用红色圆圈标记的区域。红色圆圈左下方的角落没有关闭,因此很可能在邻近区域也进行洪水填充 - 我猜这不是故意的!? -
感谢您的 cmets。我该如何解决这个问题?
-
为什么你的 Canny 最小值和最大值设置为相同的值?
-
请问您期待什么结果?也许你可以添加一个图表。您是否要为原始图像重新着色?
-
在检测到的边缘不完全相遇的地方,您可以对白色边缘区域应用一些形态膨胀。
标签: python opencv machine-learning computer-vision