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中文件操作简明介绍
Apr 13 Python
Python中的rfind()方法使用详解
May 19 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
Mar 29 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
python isinstance函数用法详解
Feb 13 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
Python计算矩阵的和积的实例详解
Sep 10 Python
Python:__eq__和__str__函数的使用示例
Sep 26 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
详解php中反射的应用
2016/03/15 PHP
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
JavaScript SetInterval与setTimeout使用方法详解
2013/11/15 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
React学习之事件绑定的几种方法对比
2017/09/24 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python3 修改默认环境的方法
2019/02/16 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
零基础小白多久能学会python
2020/06/22 Python
HTML5中判断用户是否正在浏览页面的方法
2014/05/03 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
WSDL的操作类型主要有几种
2013/07/19 面试题
幼儿教师研修感言
2014/02/12 职场文书
社区先进事迹材料
2014/05/19 职场文书
室内设计专业自荐信
2014/05/31 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers