使用OpenCV实现Canny边缘检测,代码可直接运行

以下是一个详细的Python代码示例,使用OpenCV实现Canny边缘检测。代码可直接运行,请确保已安装OpenCV库(pip install opencv-python)。

# 导入OpenCV库
import cv2
import numpy as np

# 读取输入图像(请确保当前目录下有一张名为'image.jpg'的图片)
# 或者替换为你的图片路径
image = cv2.imread('image.jpg')

# 检查图像是否正确加载
if image is None:
    print("错误:无法读取图像,请检查文件路径")
    exit()

# 步骤1:将图像转换为灰度图(Canny需要单通道输入)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 步骤2:应用高斯模糊降噪(内核大小建议为奇数,常用5x5或7x7)
blurred = cv2.GaussianBlur(gray_image, (5, 5), 0)

# 步骤3:执行Canny边缘检测
# 参数说明:
#   blurred: 输入图像
#   50: 低阈值
#   150: 高阈值(推荐比例为1:2或1:3)
edges = cv2.Canny(blurred, 50, 150)

# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Canny Edges', edges)

# 保存结果到文件
cv2.imwrite('canny_edges_result.jpg', edges)

# 等待按键后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

代码说明:

  1. 图像读取:使用cv2.imread()读取图像,如果路径错误会提示错误信息
  2. 灰度转换:Canny算法需要单通道输入,因此先将BGR图像转为灰度
  3. 高斯模糊:使用5x5高斯核消除噪声,这是Canny检测前的关键预处理步骤
  4. Canny检测
    • 低阈值(50):梯度值低于此的视为非边缘
    • 高阈值(150):梯度值高于此的视为强边缘
    • 中间值根据连续性判断(边缘跟踪)
  5. 结果显示:同时显示原始图像和边缘检测结果
  6. 结果保存:将边缘检测结果保存为canny_edges_result.jpg

运行准备:

  1. 将你的测试图像命名为image.jpg放在代码同级目录
  2. 或修改代码中的文件路径为你的实际路径
  3. 安装OpenCV:pip install opencv-python

参数调整建议:

• 阈值比例推荐保持1:2或1:3
• 模糊内核越大,细节越少(降噪效果越强)
• 高阈值越高,检测到的边缘越少

运行后会看到两个窗口:左边是原始图像,右边是边缘检测结果。按任意键可退出程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Thomas

谢谢您的打赏,我将会更好创作。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值