python+opencv边缘提取与各函数参数的示例分析-创新互联

这篇文章将为大家详细讲解有关python+opencv边缘提取与各函数参数的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、重庆小程序开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了临翔免费建站欢迎大家使用!

一、opencv+python环境搭建

其实能写python的就能写opencv,但是工具很总要,代码提示也很重要,你可能会用submit     vs等工具,submit编码个人觉得不够智能,vs的话过完年我学的方向不一致,所以没用

推荐 pycharm ,在项目setting中的项目解释器中安装 opencv-python 即可进行编码。python环境搭建也灰常方便。

二、边缘提取案例

import cv2
def edge_demo(image):
  #GaussianBlur图像高斯平滑处理
  blurred = cv2.GaussianBlur(image, (3, 3), 0)
  #(3, 3)表示高斯矩阵的长与宽都是3,意思就是每个像素点按3*3的矩阵在周围取样求平均值,,标准差取0
  gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  #颜色模式转换成cv2.COLOR_BGR2GRAY模式下的灰度图像
  
  edge_output = cv2.Canny(gray, 50, 150)
  #提取上一步中处理好的图像边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体
  cv2.imshow("canny edge", edge_output)#输出灰度图像
  #原图与灰度图像与运算,按照灰度图剪切加和的原图
  dst = cv2.bitwise_and(image, image, mask=edge_output)  cv2.imshow("color edge", dst)#输出带颜色边缘图像


if __name__ == '__main__':
  img = cv2.imread("cat.jpg")
  # cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE)
  cv2.imshow("input image", img)
  edge_demo(img)

  cv2.waitKey(0)#等待键盘输入,不输入 则无限等待
  cv2.destroyAllWindows()#清除所以窗口

三、解释功能函数

其实上面的代码也是用的别人的,但绝大多数都没有解释,对于像我这种新手不是很友好

高斯处理

图像处理中,常用的滤波算法有均值滤波、中值滤波以及高斯滤波等。

三种滤波器的对比:

滤波器种类 基本原理 特点

均值滤波 使用模板内所有像素的平均值代替模板中心像素灰度值 易收到噪声的干扰,不能完全消除噪声,只能相对减弱噪声

中值滤波 计算模板内所有像素中的中值,并用所计算出来的中值体改模板中心像素的灰度值 对噪声不是那么敏感,能够较好的消除椒盐噪声,但是容易导致图像的不连续性

高斯滤波 对图像邻域内像素进行平滑时,邻域内不同位置的像素被赋予不同的权值 对图像进行平滑的同时,同时能够更多的保留图像的总体灰度分布特征

意思就是使你的图像灰度分布更均匀,每个点的像素均为周围 按3*3的矩阵在周围取样求平均值,,标准差取0来处

 blurred = cv2.GaussianBlur(image, (3, 3), 0)
#GaussianBlur图像高斯平滑处理
#(3, 3)表示高斯矩阵的长与宽都是3,意思就是每个像素点按3*3的矩阵在周围取样求平均值,,标准差取0

灰度转换----》也叫做二值化处理

故名思意就是转换成黑白图像,后面的参数中    cv2.COLOR_BGR2GRAY  其实就是色彩模式,所以函数名为 cvtColor(色彩模式转换)

cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变, 即转换后的图像的数据类型和位深与源图像一致

 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  #颜色模式转换成cv2.COLOR_BGR2GRAY模式下的灰度图像

边缘识别提取

这一步是将二值化后的图像提取边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体

简明而言就是,小的用于细小的地方处理,大的宏观处理----》大阈值用于分离背景与轮廓,晓得用于拼接细小的轮廓,即可形成一个整体

edge_output = cv2.Canny(gray, 50, 150)
  #提取上一步中处理好的图像边缘,50和150分别代表低阈值和高阈值,高阈值用来将物体与背景区分开来,低的用于平滑连接高阈值产生的片段,使图像成一个整体

输出即可,小面的函数只是对比学习而已,可以不用

(对于dst = cv2.bitwise_and(image, image, mask=edge_output) cv2.imshow("color edge", dst)#输出带颜色边缘图像

)

python+opencv边缘提取与各函数参数的示例分析

关于“python+opencv边缘提取与各函数参数的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享文章:python+opencv边缘提取与各函数参数的示例分析-创新互联
URL链接:https://www.cdcxhl.com/article34/depgpe.html

成都网站建设公司_创新互联,为您提供网站内链静态网站外贸网站建设微信小程序品牌网站设计云服务器

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站优化排名