Python图像边缘检测:边缘检算法原理及实现过程
warning:
这篇文章距离上次修改已过202天,其中的内容可能已经有所变动。
import cv2
import numpy as np
def edge_detection(image_path):
# 读取图片
image = cv2.imread(image_path)
# 转换为灰度图
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 使用Sobel算子进行边缘检测
sobelx = cv2.Sobel(gray_image, cv2.CV_64F, 1, 0, ksize=5)
sobely = cv2.Sobel(gray_image, cv2.CV_64F, 0, 1, ksize=5)
# 计算边缘强度
edge_map = np.sqrt(sobelx**2 + sobely**2)
# 标准化边缘强度,使其值在0-255之间
edge_map_scaled = cv2.normalize(edge_map, None, 0, 255, cv2.NORM_MINMAX)
# 转换为uint8类型
edge_map_scaled = np.uint8(edge_map_scaled)
# 使用Otsu方法自动确定阈值进行二值化
_, edge_binary = cv2.threshold(edge_map_scaled, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Edge Map', edge_map_scaled)
cv2.imshow('Edge Binary', edge_binary)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 使用函数检测图片
edge_detection('your_image_path.jpg')
这段代码展示了如何使用Sobel算子进行边缘检测,并应用Otsu方法进行图像二值化。需要注意的是,这里的代码假设你已经安装了OpenCV库,并且你需要将'your\_image\_path.jpg'替换为你想要检测的图片的路径。
评论已关闭