python+opencv入门-canny 边缘检测

任务描述

参考文章
https://www.educoder.net/shixuns/2pwliuxy/challenges 本关任务:使用 OpenCV 实现图片边缘检测方法,并对图片进行边缘检测。

相关知识

为了完成本关任务,你需要掌握:
1 . 什么是边缘检测;
2 . 使用 OpenCV 实现图片边缘检测方法。

什么是边缘检测

边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。图像属性中的显著变化通常反映了属性的重要事件和变化。如下图:

python 图像DCT python 图像边缘检测_python


常用的边缘检测模板有 Laplacian 算子、Roberts 算子、Sobel 算子、 Kirsch 算子和 Prewitt 算子等。在这里简单介绍下 canny 边缘检测,大概分为以下五个步骤:

1.使用高斯滤波器,以平滑图像,滤除噪声。
2.计算图像中每个像素点的梯度强度和方向。
3.应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。
4.应用双阈值(Double-Threshold)检测来确定真实的和潜在的边缘。
5.通过抑制孤立的弱边缘最终完成边缘检测。

使用OpenCV实现图片边缘检测方法

import cv2
#加载灰度图片
img = cv2.imread(img_path,0)
#进行canny边缘检测
canny_edg=cv2.Canny(img,50,150)
#保存处理后的图片
cv2.imwrite(save_path,canny_edg)

其中 cv2.imread() 为加载图片方法,0 表示加载灰度图片。cv2.Canny() 为 canny 边缘检测方法,img 为所检测图片。
最后将处理后的图片保存,save_path 为保存路径。

编程要求

根据提示,在右侧编辑器的 begin-end 间补充代码,实现边缘检测方法,并对图片进行边缘检测。

测试说明

程序会使用你实现的方法对图片进行边缘检测,若检测结果与正确结果差异在阈值内则视为通关。

#encoding=utf8
import cv2
def canny_edg(img_path,save_path):    
'''    img_path:图片储存路径    
save_path:图片保存路径    
img:处理后的图片    '''    
#********* Begin *********#   
#加载灰度图片    
img = cv2.imread(img_path,0)    
#进行canny边缘检测  
#补全代码!!
#保存处理后的图片    
cv2.imwrite(save_path,canny_edg)    
#********* End *********#    
return img

+++++++++++++++++++++++++answer++++++++++++++++++++++++++++++++

python 图像DCT python 图像边缘检测_计算机视觉_02