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操作列表的常用方法分享
Feb 13 Python
python实现查询苹果手机维修进度
Mar 16 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
Python3基于sax解析xml操作示例
May 22 Python
python中数组和矩阵乘法及使用总结(推荐)
May 18 Python
pip install python 快速安装模块的教程图解
Oct 08 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
Feb 27 Python
Opencv图像处理:如何判断图片里某个颜色值占的比例
Jun 03 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
python使用XPath解析数据爬取起点小说网数据
Apr 22 Python
Django框架之路由用法
Jun 10 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
晶体管来复再生式二管收音机
2021/03/02 无线电
PHP number_format() 函数定义和用法
2012/06/01 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
用JS判断IE版本的代码 超管用!
2011/08/09 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
JavaScript中按位“异或”运算符使用介绍
2014/03/14 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
Vue实现搜索结果高亮显示关键字
2019/05/28 Javascript
vue使用websocket的方法实例分析
2019/06/22 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
Python切片索引用法示例
2018/05/15 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
2018/07/25 Python
python 构造三维全零数组的方法
2018/11/12 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
开业庆典邀请函
2014/01/08 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
525心理活动总结
2014/07/04 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android