首页 > 解决方案 > 如何在 Python 中拼凑边缘检测结果和原始图片

问题描述

我正在尝试使用Canny.

然后,我想反转检测到的边缘的颜色(白色背景上的黑色边缘)。

最后,我需要将原始图片和边缘合成为一张图片。

这是我的代码:

import cv2
import numpy as np
picture = cv2.imread("picture.jpg")
gray = cv2.cvtColor(picture,cv2.COLOR_BGR2GRAY)
edge = cv2.Canny(gray,100,250,3)
(thresh, blackEdges) = cv2.threshold(edge, 0, 255, cv2.THRESH_BINARY_INV)
result = blackEdges + gray   # I tryed this and ,i didn't get what i want.
cv2.imshow("Result",result)
cv2.waitKey(0)
cv2.destroyAllWindows()

标签: pythonopencv

解决方案


将结果行替换为

result = picture.copy()
result[blackEdges==0] = (0,0,0)


这将使您的图片在边缘图像为黑色的地方变黑。您可以将 (0,0,0) 替换为 (0,0,255) 以使它们显示为红色。对于任何其他颜色也是如此。

如果你想要灰色图像上的边缘,那么做

result = gray.copy()
result[blackEdges==0] = (0,0,0)



推荐阅读