python+opencv边缘提取与各函数参数解析


Posted in Python onMarch 09, 2020

前情提要:作为刚入门机器视觉的小伙伴,第一节课学到机器视觉语法时觉得很难理解,

很多人家的经验,我发现都千篇一律,功能函数没解析,参数不讲解,就一个代码,所以在此将搜集的解析和案例拿出来汇总!!!

一、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边缘提取与各函数参数解析的文章就介绍到这了,更多相关python opencv边缘提取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
Apr 25 Python
Python变量和数据类型详解
Feb 15 Python
K-means聚类算法介绍与利用python实现的代码示例
Nov 13 Python
Python求出0~100以内的所有素数
Jan 23 Python
python代码 输入数字使其反向输出的方法
Dec 22 Python
python递归法解决棋盘分割问题
Jul 17 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
浅谈Python中的异常和JSON读写数据的实现
Feb 27 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
python 常见的反爬虫策略
Sep 27 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
Mar 09 #Python
Pycharm+Python工程,引用子模块的实现
Mar 09 #Python
python的sys.path模块路径添加方式
Mar 09 #Python
python游戏开发的五个案例分享
Mar 09 #Python
Python IDLE或shell中切换路径的操作
Mar 09 #Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
Mar 09 #Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
Mar 09 #Python
You might like
56.com视频采集接口程序(PHP)
2007/09/22 PHP
PHP把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
基于JQuery的一个简单的鼠标跟随提示效果
2010/09/23 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
浅析javascript中函数声明和函数表达式的区别
2015/02/15 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
打字效果动画的4种实现方法(超简单)
2017/10/18 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
详解django模板与vue.js冲突问题
2019/07/07 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
Python常用列表数据结构小结
2014/08/06 Python
python将ip地址转换成整数的方法
2015/03/17 Python
Python中比较特别的除法运算和幂运算介绍
2015/04/05 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
Python中Numpy mat的使用详解
2019/05/24 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
商学院大学生求职的自我评价
2014/03/12 职场文书
出纳担保书范文
2014/04/02 职场文书
房屋转让协议书
2014/04/11 职场文书
安全生产计划书
2014/05/04 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
2014年卫生工作总结
2014/11/27 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android