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中的闭包实例详解
Aug 29 Python
python执行等待程序直到第二天零点的方法
Apr 23 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
Django 缓存配置Redis使用详解
Jul 23 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
如何打包Python Web项目实现免安装一键启动的方法
May 21 Python
python适合做数据挖掘吗
Jun 16 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
python元组打包和解包过程详解
Aug 02 Python
python 使用pandas读取csv文件的方法
Dec 24 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
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
php和html的区别点详细总结
2019/09/24 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
Javascript实例教程(19) 使用HoTMetal(7)
2006/12/23 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
比较新旧两个数组值得增加和删除的JS代码
2013/10/30 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
如何快速上手Vuex
2017/02/14 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
原生JS实现的轮播图功能详解
2018/08/06 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
[50:01]Ti4 冒泡赛第二天 NEWBEE vs Titan
2014/07/15 DOTA
[49:20]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
python获取指定网页上所有超链接的方法
2015/04/04 Python
python中logging包的使用总结
2018/02/28 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
HTML5超炫酷粒子效果的进度条的实现示例
2019/08/23 HTML / CSS
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
大型活动策划方案
2014/01/12 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
模具专业自荐信
2014/05/29 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
专业技术人员年度考核评语
2014/12/31 职场文书
投资申请报告
2015/05/19 职场文书
公安机关起诉意见书
2015/05/20 职场文书
公司保密管理制度
2015/08/04 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
浅谈tf.train.Saver()与tf.train.import_meta_graph的要点
2021/05/26 Python
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android