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范数(直接将两个方向导数的绝对值相加)。
本文介绍了如何使用OpenCV进行图像处理,包括将RGB图像转为灰度、应用高斯滤波,并详细解读了Canny边缘检测算法的原理和参数选择。通过实例展示了Canny函数的使用及其在实际图像处理中的效果。

被折叠的 条评论
为什么被折叠?



