📜  python cv2 canny 叠加在图像上 - Python (1)

📅  最后修改于: 2023-12-03 14:45:56.957000             🧑  作者: Mango

Python cv2 Canny 叠加在图像上

Python是一种流行的开源编程语言,常用于图像处理和计算机视觉。

OpenCV是一个流行的计算机视觉库,其中包含了许多用于图像处理和计算机视觉的函数和工具。

Canny算子是一种常用的边缘检测算法,用于检测图像中的边缘和轮廓。在OpenCV中,可以使用cv2.Canny函数来实现Canny算子。

步骤
  1. 读取图像并将其转换为灰度图像。
  2. 使用Canny算子检测图像的边缘。
  3. 将检测到的边缘叠加在原图像上并显示。
import cv2
import numpy as np

# 读取图像并将其转换为灰度图像
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 使用Canny算子检测图像的边缘
edges = cv2.Canny(gray, 100, 200)

# 将检测到的边缘叠加在原图像上并显示
overlay = np.zeros_like(img)
overlay[:,:,0] = edges
overlay[:,:,1] = edges
overlay[:,:,2] = edges
result = cv2.addWeighted(img, 0.8, overlay, 0.2, 0)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
解释
  1. 使用cv2.imread函数读取图像,并使用cv2.cvtColor将其转换为灰度图像。
  2. 使用cv2.Canny函数检测图像的边缘。Canny算子需要两个参数:阈值1和阈值2。如果某个像素的梯度值大于阈值2,则它被认为是边缘像素;如果某个像素的梯度值小于阈值1,则它被认为不是边缘像素。如果某个像素的梯度值在阈值1和阈值2之间,则仅当该像素与可以被认为是边缘像素的像素相连时,它才被认为是边缘像素。
  3. 将检测到的边缘叠加在原图像上并显示。为了将边缘叠加在原图像上,需要先创建一个与原图像大小相同的全零图像,然后将检测到的边缘赋值给其中一个通道。最后,使用cv2.addWeighted函数将原图像和叠加后的图像混合在一起。混合时,可以指定每张图像的权重,以及在两张图像重叠的地方如何混合。在这个例子中,使用权重0.8和0.2来混合原图像和叠加后的图像,使边缘更清晰地显示出来。
结论

本文介绍了如何使用Python,在OpenCV中实现Canny算子,并将其叠加在原图像上显示。Canny算法是一种常用的边缘检测算法,能够帮助我们检测图像中的边缘和轮廓。这个例子可以用于学习如何使用OpenCV处理图像,以及如何使用Canny算子检测图像中的边缘。