使用OpenCV python在一个窗口中组合多个Canny边缘检测

使用OpenCV python在一个窗口中组合多个Canny边缘检测,python,opencv,computer-vision,edge-detection,canny-operator,Python,Opencv,Computer Vision,Edge Detection,Canny Operator,我用不同的阈值进行了三次canny边缘检测,然后以不同的方式更改颜色线,现在我想将所有这些线组合在一个窗口中显示。下面是一张图片,例如: 这是我到目前为止的代码: 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.cvt

我用不同的阈值进行了三次canny边缘检测,然后以不同的方式更改颜色线,现在我想将所有这些线组合在一个窗口中显示。下面是一张图片,例如:

这是我到目前为止的代码:

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,0),np.uint8) 
rgb2 *= np.array((0,1,0),np.uint8)
rgb3 *= np.array((0,0,1),np.uint8)



cv2.imshow('Deteksi Tepi dengan Canny', rgb1)

在Python/OpenCV中,我相信您可以对彩色帧图像进行精明的边缘检测,结果将是一幅具有彩色边缘的图像

OpenCV按BGR顺序使用颜色。Matplotlib按RGB顺序使用颜色。但是如果使用RGB顺序,那么cv2.imshow(将显示错误的颜色)。它需要BGR订单

如果相框是彩色的,就这样做

canny = cv2.Canny(frame,30,50)
或者,将通道与帧分离,并对每个通道进行canny边缘处理。然后将3个canny结果组合到每个颜色通道中

b,g,r = cv2.split(frame)
b_edge = cv2.Canny(b,30,50)
g_edge = cv2.Canny(g,30,50)
r_edge = cv2.Canny(r,30,50)
edge = cv2.merge([b_edge, g_edge, r_edge])
cv2.imshow('Color Canny', edge)


谢谢你,我以前是被制作成灰度的。但这是可行的。