Python OpenCV超详细讲解基本功能


Posted in Python onApril 02, 2022

准备工作

右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库。

Python OpenCV超详细讲解基本功能

转成灰度图像

  • 调用imread()方法获取我们资源文件夹中的图片lena.png
  • cvtColor()方法可以让我们的图片转换成任意颜色,第一个参数是我们要转换的图片,第二个参数是要转成的颜色空间,cv2.COLOR_BGR2GRAY就是由BGR变为GRAY,我们日常生活中都是RGB三通道顺序,而在OpenCV中是BGR顺序。
  • 使用imshow()方法显示图片,窗口名称为Gray Image
  • waitKey(0)这句可以让窗口一直保持,如果去掉这句,窗口会一闪而过
img=cv2.imread("Resources/lena.png")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image",imgGray)
cv2.waitKey(0)

我们来看下效果:

Python OpenCV超详细讲解基本功能

高斯模糊

  • GaussianBlur()是对图片进行高斯模糊(也称为高斯平滑),是去除图像噪声的一种方法。
  • 第一个参数是图像,第二个参数(7,7)是卷积核的大小,只能是奇数长度的矩阵,第三个参数是Sigma X,默认为0
  • imshow()显示原图和灰度图
img=cv2.imread("Resources/lena.png")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imgGray,(7,7),0)
cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.waitKey(0)

我们来看下效果,左为原图,右是高斯模糊:

Python OpenCV超详细讲解基本功能

边缘检测

边缘检测Canny()方法中第一个参数是图像,第二个参数是阈值1,第三个参数是阈值2,用来显示灰度值在此范围内的边缘线。

img=cv2.imread("Resources/lena.png")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imgGray,(7,7),0)
imgCanny=cv2.Canny(img,150,200)

cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.imshow("Canny Image",imgCanny)
cv2.waitKey(0)

我们运行看下效果:

Python OpenCV超详细讲解基本功能

膨胀运算

膨胀运算中,会用到numpy库,我们先导入一下:import numpy as np定义一下大小为5x5的卷积核:kernel=np.ones((5,5),np.uint8),数值类型是无符号整型

kernel=np.ones((5,5),np.uint8)
img=cv2.imread("Resources/lena.png")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imgGray,(7,7),0)
imgCanny=cv2.Canny(img,150,200)
imgDialation=cv2.dilate(imgCanny,kernel,iterations=1)

cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.imshow("Canny Image",imgCanny)
cv2.imshow("Dialation Image",imgDialation)
cv2.waitKey(0)

我们看下效果,膨胀使得边缘线变得更厚,全部连接到一块。

Python OpenCV超详细讲解基本功能

腐蚀运算

我们对刚刚膨胀的图像进行腐蚀运算,就可以得到闭合的边缘图像。

kernel=np.ones((5,5),np.uint8)
img=cv2.imread("Resources/lena.png")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
imgBlur=cv2.GaussianBlur(imgGray,(7,7),0)
imgCanny=cv2.Canny(img,150,200)
imgDialation=cv2.dilate(imgCanny,kernel,iterations=1)

cv2.imshow("Gray Image",imgGray)
cv2.imshow("Blur Image",imgBlur)
cv2.imshow("Canny Image",imgCanny)
cv2.imshow("Dialation Image",imgDialation)
cv2.waitKey(0)

从左到右依次为膨胀图像、腐蚀图像、边缘检测图像

Python OpenCV超详细讲解基本功能

OK,本节内容也是非常简单的,主要是让大家熟悉下OpenCV最基础的应用。眼过千遍不如手过一遍,快去动手敲一遍吧~?

到此这篇关于Python OpenCV超详细讲解基本功能的文章就介绍到这了,更多相关Python OpenCV 基本功能内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python如何实现MySQL实例初始化详解
Nov 06 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
浅谈Pandas 排序之后索引的问题
Jun 07 Python
利用Django提供的ModelForm增删改数据的方法
Jan 06 Python
python解析xml简单示例
Jun 21 Python
django中使用POST方法获取POST数据
Aug 20 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
Tensorflow累加的实现案例
Feb 05 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
Python代码中如何读取键盘录入的值
May 27 Python
python函数的两种嵌套方法使用
Apr 02 #Python
Python OpenCV超详细讲解调整大小与图像操作的实现
Python实现提取PDF简历信息并存入Excel
Apr 02 #Python
python对文档中元素删除,替换操作
Apr 02 #Python
Python中第三方库Faker的使用详解
Python数据处理的三个实用技巧分享
Python+Tkinter打造签名设计工具
You might like
php使用ICQ网关发送手机短信
2013/10/30 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
php实现通过ftp上传文件
2015/06/19 PHP
JS随即打乱数组实现代码
2012/12/03 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jQuery实现表格行上下移动和置顶效果
2015/06/05 Javascript
javascript实现根据时间段显示问候语的方法
2015/06/18 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
vuejs指令详解
2017/02/07 Javascript
前端开发不得不知的10个最佳ES6特性
2017/08/30 Javascript
weebox弹出窗口不居中显示的解决方法
2017/11/27 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
vue-cli3项目展示本地Markdown文件的方法
2019/06/07 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
深入理解Python对Json的解析
2017/02/14 Python
Python函数式编程
2017/07/20 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
django项目中新增app的2种实现方法
2020/04/01 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
"火柴棍式"程序员面试题
2014/03/16 面试题
使用索引有什么好处
2016/07/27 面试题
写给学生的新学期寄语
2014/01/18 职场文书
法制宣传实施方案
2014/03/13 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
出纳工作检讨书
2014/10/18 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android