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

这篇具有很好参考价值的文章主要介绍了python+opencv_my图像边缘检测笔记1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

1、Roberts算子

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

垂直方向w1与水平方向w2

python+opencv_my图像边缘检测笔记1,opencv,笔记,人工智能

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

python+opencv_my图像边缘检测笔记1,opencv,笔记,人工智能

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();文章来源地址https://www.toymoban.com/news/detail-844881.html

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)

到了这里,关于python+opencv_my图像边缘检测笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV实现图像梯度,Canny边缘检测】

    OpenCV中,可以使用各种函数实现图像梯度和Canny边缘检测,这些操作对于图像处理和分析非常重要。 图像梯度通常用于寻找图像中的边缘和轮廓。在OpenCV中,可以使用cv2.Sobel()函数计算图像的梯度,该函数可以计算图像在水平和垂直方向上的梯度。梯度的方向和大小可以帮助

    2024年02月07日
    浏览(48)
  • 我在Vscode学OpenCV 图像处理三(图像梯度--边缘检测【图像梯度、Sobel 算子、 Scharr 算子、 Laplacian 算子、Canny 边缘检测】)

    这里需要区分开边缘检测和轮廓检测 边缘检测并非万能,边缘检测虽然能够检测出边缘,但边缘是不连续的,检测到的边缘并不是一个整体。图像轮廓是指将边缘连接起来形成的一个整体,用于后续的计算。 OpenCV 提供了查找图像轮廓的函数 cv2.findContours(),该函数能够查找图

    2024年02月04日
    浏览(56)
  • OpenCV数字图像处理基于C++:边缘检测

    边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。 图像边缘检测大幅度地减少了数据量,并且剔除了可以认为不相关的信息,保留了图像重要的结构属性。有许多

    2024年02月05日
    浏览(56)
  • 如何在OpenCV中实现图像的边缘检测和轮廓提取?opencv教程

    在OpenCV中,可以使用边缘检测算法和轮廓提取函数来实现图像的边缘检测和轮廓提取。以下是一种常用的方法: 边缘检测: 在OpenCV中,常用的边缘检测算法包括Canny边缘检测和Sobel算子。 Canny边缘检测: Canny边缘检测是一种广泛使用的边缘检测算法,它能够有效地检测出图像

    2024年02月15日
    浏览(34)
  • QT+OpenCV实现一个标注工具(图像处理、边缘检测)

    作者是一名QT初学者,为检验学习成果及完成毕业设计,在张老师和学姐的指导下,开发了这个标注工具。CSDN上很多文章对我的学习提供了极大的帮助,分享这篇文章给需要的人一起学习进步~ 废话不多说,先看看效果: Windows10、Qt5.13.2(编译器用的是MinGW64_bit)、OpenCV4.1 环

    2024年02月11日
    浏览(44)
  • OpenCV15-图像边缘检测:Sobel、Scharr、Laplace、Canny

    图像的边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像中的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像的边缘对应在灰度值函数中是函数值突然变大的区域。函数值得变化趋势可以用导数描述,当函数值突然变大时,导数也必然会变大

    2024年02月07日
    浏览(47)
  • OPENCV C++图像提取,图像处理,roi,阈值分割,连通区域筛选,边缘检测(以箱子边缘框选为例)

    本周有机会接触了一点opnev, 在此做一下记录, 最终以 框选出下图箱子为目的( 图片箱子为相机实拍结果,曝光有点低,会有亿点点暗 ), 本文会拆解步骤并附上图片, 完整的源码在最后.PS: 本文参考了好多大佬分享的理论知识, 在此先感谢大佬的分享~~ 首先是梳理一下流程, 下图是

    2024年02月07日
    浏览(48)
  • 04- 图像卷积及图片的模糊和边缘检测 (OpenCV系列) (机器视觉)

    知识重点 padding指的就是填充的0的圈数 重构图片大小:  img = cv2.resize(img, dsize=(300, 300)) 模糊操作 :  dst = cv2.filter2D (img, -1, kernel) 模糊操作 : 方盒滤波 :  dst = cv2.boxFilter (img, -1, (5, 5), normalize = True)   # normalize = True时, a = 1 / (W * H) 滤波器的宽高, 且此时方盒滤波等价于均值滤波

    2024年02月02日
    浏览(42)
  • C++如何用OpenCV中实现图像的边缘检测和轮廓提取?

    主要实现代码:

    2024年02月07日
    浏览(39)
  • (计算机视觉课程-笔记1)图像边缘检测

    Sobel算子是一种常用于图像处理和计算机视觉中的边缘检测算法。它用于识别图像中的边缘区域,即图像中灰度值发生剧烈变化的地方。Sobel算子基于图像的灰度梯度,通过计算每个像素点周围像素的灰度值差异,来确定边缘的位置和方向。 Sobel算子主要由两个3x3的矩阵组成,

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包