如何解决使用OpenCV python在一个窗口中结合几个Canny边缘检测
我用不同的阈值进行了3个canny边缘检测,然后以不同的方式更改了颜色线,现在我想将所有这些线组合在一起显示在一个窗口中。例如以下图片: Edge detection with different colors
这是到目前为止的代码:
edges1 = cv2.Canny(frame,30,50)
rgb1 = cv2.cvtColor(edges,cv2.COLOR_GRAY2RGB) # RGB for matplotlib,BGR for imshow() !
edges2 = cv2.Canny(frame,20,60)
rgb2 = cv2.cvtColor(edges,cv2.COLOR_GRAY2RGB)
edges3 = cv2.Canny(frame,40,40)
rgb3 = cv2.cvtColor(edges,cv2.COLOR_GRAY2RGB)
# multiply with another array to change line colors:
rgb1 *= np.array((1,0),np.uint8)
rgb2 *= np.array((0,1,np.uint8)
rgb3 *= np.array((0,1),np.uint8)
cv2.imshow('Deteksi Tepi dengan Canny',rgb1)
解决方法
在Python / OpenCV中,我相信您可以对色框图像进行Canny边缘检测,结果将是一张带有颜色边缘的图像。
OpenCV按BGR顺序使用颜色。 Matplotlib使用RGB顺序的颜色。但是,如果使用RGB顺序,则cv2.imshow(将显示错误的颜色)。它需要BGR订单。
如果框架是彩色的,那就做
canny = cv2.Canny(frame,30,50)
或者,将通道从帧中分离出来,并对每个通道进行精巧边缘处理。然后将3个canny结果合并到每个颜色通道中。
b,g,r = cv2.split(frame)
b_edge = cv2.Canny(b,50)
g_edge = cv2.Canny(g,50)
r_edge = cv2.Canny(r,50)
edge = cv2.merge([b_edge,g_edge,r_edge])
cv2.imshow('Color Canny',edge)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。