【问题标题】:Is there a way to fill an edge detected image with corresponding colors according to original image?有没有办法根据原始图像用相应的颜色填充边缘检测到的图像?
【发布时间】: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


【解决方案1】:

您可以尝试将第一张图片涂成蓝色和红色,然后您会得到一张图片 3,您可以将它与图片 2 混合

【讨论】:

    猜你喜欢
    • 2020-08-17
    • 2019-10-24
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 1970-01-01
    • 2021-07-13
    • 2010-12-01
    相关资源
    最近更新 更多