外国域名注册很多网站,电影片头在线制作网站,濮阳网吧,免费装wordpress1. 梯度处理的Sobel算子函数 功能 Sobel算子是一种用于边缘检测的离散微分算子#xff0c;它结合了高斯平滑和微分求导#xff0c;用于计算图像亮度的空间梯度。
参数 src#xff1a;输入图像。 dst#xff1a;输出图像。 ddepth#xff1a;输出图像的深度。 dx#xff…
1. 梯度处理的Sobel算子函数 功能 Sobel算子是一种用于边缘检测的离散微分算子它结合了高斯平滑和微分求导用于计算图像亮度的空间梯度。
参数 src输入图像。 dst输出图像。 ddepth输出图像的深度。 dx计算x方向梯度。 dy计算y方向梯度。 ksizeSobel内核的大小。 返回值 函数不返回值但会修改dst参数。
import cv2
import numpy as npimg cv2.imread(./shudu.png)# 使用sobel算子
img_sobel cv2.Sobel(img,-1,0,1,ksize3) #垂直梯度
img_sobel_2 cv2.Sobel(img,-1,1,0,ksize3) #水平梯度cv2.imshow(img,img)
cv2.imshow(img_sobel,img_sobel)
cv2.imshow(img_sobel_2,img_sobel_2)
cv2.waitKey(0) 2. 梯度处理Laplacian算子函数
功能 Laplacian算子是一种二阶导数算子用于检测图像中的区域的二阶导数常用于边缘检测。
参数 src输入图像。 dst输出图像。 ddepth输出图像的深度。 ksizeLaplacian内核的大小。 返回值 无。
应用 Laplacian算子适用于需要检测图像中区域的快速变化如边缘和角点。
import cv2
import numpy as npimgcv2.imread(./3.png)img_lcv2.Laplacian(img,-1,ksize3)cv2.imshow(img1,img_l)
cv2.waitKey(0) 3. Canny算子函数 功能 Canny算子是一种多级边缘检测算子它通过高斯滤波、梯度计算、非极大值抑制和滞后阈值处理来检测图像中的边缘。
参数 image输入图像。 edges输出边缘图像。 threshold1第一阈值。 threshold2第二阈值。 返回值 无。
import cv2
imgcv2.imread(./5.png)img_graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)_,img_bcv2.threshold(img_gray,127,255,cv2.THRESH_BINARYcv2.THRESH_OTSU)#进行高斯滤波
img_blurcv2.GaussianBlur(img_b,(3,3),3)#边缘检测
img_cannycv2.Canny(img_gray,50,150)contours, hierarchy cv2.findContours(img_canny, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)cv2.drawContours(img, contours, -1, (0, 0, 255), 2)cv2.imshow(img,img)
cv2.imshow(img_canny,img_canny)cv2.waitKey(0) 4. findContours函数 功能 findContours函数用于在二值图像中查找轮廓。
参数 image输入的二值图像。 contours检测到的轮廓。 hierarchy轮廓的层次结构。 返回值 轮廓的数量。
5. drawContours函数 功能 drawContours函数用于在图像上绘制轮廓。
参数 image输入图像。 contours要绘制的轮廓。 contourIdx要绘制的轮廓索引。 color轮廓的颜色。 返回值 会直接在输入的图像上进行绘制。
一般建议复制原图在复制后的图片上绘制方便和原图进行对比。 import cv2
imgcv2.imread(5.png)img_graycv2.cvtColor(img,cv2.COLOR_BGR2GRAY)#二值化
_,img_bcv2.threshold(img_gray,120,255,cv2.THRESH_BINARYcv2.THRESH_OTSU)#寻找轮廓
contours,hierarchycv2.findContours(img_b,cv2.RETR_LIST,#查询轮廓的方式cv2.CHAIN_APPROX_SIMPLE # 保存轮廓点坐标的方式)
# 绘制轮廓
img_copyimg.copy()
img_drawcv2.drawContours(img_copy, #要绘制轮廓的图像contours, # 轮廓的顶点-1, # 轮廓列表的索引值(0,0,255), #3 #)cv2.imshow(img,img)
cv2.imshow(img_d,img_draw)cv2.waitKey(0)