python+opencv_my图像边缘检测笔记1

一阶微分算子边缘检测算法

1、Roberts算子

适合处理声噪较低的图片,缺点:对图片的定位不太准,提取的边缘线条比较粗;通过cv2.filte(src,ddepth,kernel,[dst[,anchor,[delta[,borderType]]])实现卷积运算;

垂直方向w1与水平方向w2

ddepth:图像深度:图像深度是指图像中每个像素的颜色表示所需的位数。它决定了每个像素可能有的颜色数和灰度级别,也影响了图像的质量和细节表现能力。

delta:表示的是一个偏移量,通常在像素值的更改或者是数据的平移上使用。

通过cv2.convertScaleAbs()函数实现将数值转化为8位无符号整型;

import cv2
import  numpy as np


img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
kernelx =np.array([[1,0],[0,-1]],dtype=int)
kernely =np.array([[0,1],[-1,0]],dtype=int)

x1 =cv2.filter2D(gray,cv2.CV_16S,kernelx)#卷积运算
Y1 =cv2.filter2D(gray,cv2.CV_16S,kernely)

absX1=cv2.convertScaleAbs(x1)#数值转化
absY1=cv2.convertScaleAbs(Y1)

Roberts = cv2.addWeighted(absX1,0.5,absY1,0.5,gamma=0) # 实现两个图像融合,
cv2.imshow('Roberts', Roberts)
cv2.waitKey(0)

gamma:修正系数大于1,会增加饱和度,使图像的色彩更鲜明; 修正系数小于1,会减小饱和度,使图像看起来比较平淡。

2、Prewitt算子

原理是通过利用特定区域的像素灰度值产生的差分实现边缘检测。适合用来识别噪声较多、灰度渐变的图像边缘。

垂直方向w1与水平方向w2

img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

kernelx =np.array([[-1,-1,-1],[0,0,0],[1,1,1]],dtype=int)
kernely =np.array([[-1,0,1],[-1,0,1],[-1,0,1]],dtype=int)

x1 =cv2.filter2D(gray,cv2.CV_16S,kernelx)
Y1 =cv2.filter2D(gray,cv2.CV_16S,kernely)

absX1=cv2.convertScaleAbs(x1)
absY1=cv2.convertScaleAbs(Y1)
image= cv2.addWeighted(absX1,0.5,absY1,0.5,0)

cv2.imshow('image', image)
cv2.waitKey(0)

3、Sobel算子

较为常用,多用于噪声较多,灰度渐变

cv2.Soble();

img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)

x1 =cv2.Sobel(gray,cv2.CV_16S,1,0)
Y1 =cv2.Sobel(gray,cv2.CV_16S,0,1)

absX1=cv2.convertScaleAbs(x1)
absY1=cv2.convertScaleAbs(Y1)
image= cv2.addWeighted(absX1,0.5,absY1,0.5,0)

cv2.imshow('image', image)
cv2.waitKey(0)

4、Canny算子

具有很好的边缘检测性能,选择灰度强度变化最强的位置。

需要先对图片进行降噪,否则可能会在边缘检测中被识别为边缘

cv2.Canny();

img=cv2.imread('img.png')
gray =cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
gaus =cv2.GaussianBlur(gray,(5,5),0)
image = cv2.Canny(gaus,100,200)
cv2.imshow('image', image)
cv2.waitKey(0)

  • 25
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小土嘿嘿

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值