opencv边缘检测canny

边缘检测时需要先将图像处理成灰度图像。
下一步是高斯滤波,后续会讲解。

import cv2
import numpy as np
import random

img0 = cv2.imread(r"C:\Users\lenovo\Desktop\python\python_vision\image.jpg",1)

imgInfo = img0.shape
height = imgInfo[0]
weight = imgInfo[1]

# 转换灰度图像   2.高斯滤波    3.canny算法
gray = cv2.cvtColor(img0,cv2.COLOR_RGB2GRAY)
imgG = cv2.GaussianBlur(gray,(3,3),0)
dst = cv2.Canny(imgG,50,50)

cv2.imshow("dst",dst)
cv2.waitKey(0)

在这里插入图片描述
在这里插入图片描述
OpenCV-Python中Canny函数的原型为:

edge = cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient ]]]) 

必要参数:
第一个参数是需要处理的原图像,该图像必须为单通道的灰度图;
第二个参数是阈值1;
第三个参数是阈值2。
其中较大的阈值2用于检测图像中明显的边缘,但一般情况下检测的效果不会那么完美,边缘检测出来是断断续续的。所以这时候用较小的第一个阈值用于将这些间断的边缘连接起来。
可选参数中apertureSize就是Sobel算子的大小。而L2gradient参数是一个布尔值,如果为真,则使用更精确的L2范数进行计算(即两个方向的倒数的平方和再开放),否则使用L1范数(直接将两个方向导数的绝对值相加)。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐