小编XV1*_*V15的帖子

OpenCV 中的 Canny 可以同时处理灰度和彩色图像吗?

我对一些问题Canny边缘检测的OpenCV

这是我试过的代码。

def auto_canny(image, sigma=0.33):
    v = np.median(image)
    lower = int(max(0, (1.0 - sigma) * v))
    upper = int(min(255, (1.0 + sigma) * v))
    edged = cv2.Canny(image, lower, upper)
Run Code Online (Sandbox Code Playgroud)

然后,

##### first situation #####
img = cv2.imread('mango.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
auto = auto_canny(gray)
cv2.imwrite('mango_gray_edge.jpg', auto)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到了这样的图像: 在此处输入图片说明

##### second situation #####
img = cv2.imread('mango.jpg')
auto = auto_canny(img)
cv2.imwrite('mango_color_edge.jpg', auto)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到了这样的图像: 在此处输入图片说明

这是原始图像:

第一种情况和第二种情况的区别在于我是否将彩色图像转换为灰度。但是,我对此感到困惑。因为,

在第一种情况下,我将图像转换为灰度,因此图像具有单个通道。而在第二种情况下,图像仍然具有三个通道。

当我没有将其转换为灰度时,边缘会好得多,就像在第二种情况下一样。

所以我的问题是,

  1. OpenCV 中的 Canny 函数是否包括将图像转换为灰度的方法?我的意思是,我需要在使用之前将图像转换为灰度cv2.Canny()吗?

  2. Canny 如何同时处理单通道(第一种情况转换为灰度)和三通道(原始图像如第二种情况)图像?

  3. Canny实际上是如何工作的?Canny …

python opencv computer-vision edge-detection canny-operator

12
推荐指数
1
解决办法
8819
查看次数