python+opencv_my笔记

图像边缘检测

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

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)

相关推荐

  1. 笔记

    2024-03-21 15:30:02       25 阅读
  2. 拼音笔记笔记

    2024-03-21 15:30:02       52 阅读
  3. 笔记】HDFS基础笔记

    2024-03-21 15:30:02       44 阅读
  4. 笔记】Hbase基础笔记

    2024-03-21 15:30:02       45 阅读
  5. mySql笔记

    2024-03-21 15:30:02       55 阅读
  6. less 笔记

    2024-03-21 15:30:02       59 阅读
  7. React笔记

    2024-03-21 15:30:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-21 15:30:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-21 15:30:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-21 15:30:02       87 阅读
  4. Python语言-面向对象

    2024-03-21 15:30:02       96 阅读

热门阅读

  1. Python实现2024春晚刘谦魔术

    2024-03-21 15:30:02       47 阅读
  2. GraphQL入门之查询指令Directive

    2024-03-21 15:30:02       45 阅读
  3. Linux 常用命令速查

    2024-03-21 15:30:02       48 阅读
  4. PHP中的ArrayAccess接口详解

    2024-03-21 15:30:02       45 阅读
  5. 【数据结构】堆和栈的区别

    2024-03-21 15:30:02       44 阅读
  6. 自定义WordPress顶部的菜单的方法

    2024-03-21 15:30:02       48 阅读
  7. docker出现问题:docker所在盘存储空间不足问题

    2024-03-21 15:30:02       41 阅读