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中zfill()方法的使用教程
May 20 Python
使用pdb模块调试Python程序实例
Jun 02 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
python实现简单银行管理系统
Oct 25 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
python 实现aes256加密
Nov 27 Python
python实现视频压缩功能
Dec 18 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
一劳永逸彻底解决pip install慢的办法
May 24 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 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/01 无线电
PHP的FTP学习(二)
2006/10/09 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
Jquery实战_读书笔记2 选择器
2010/01/22 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
基于javascript编写简单日历
2016/05/02 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
深入探究node之Transform
2017/07/20 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
如何基于Django实现上下文章跳转
2020/09/16 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
软件测试题目
2013/02/27 面试题
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
网络教育自我鉴定
2014/02/04 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
会计学自荐信
2014/06/03 职场文书
2014年中秋寄语
2014/08/11 职场文书
老干部工作先进事迹
2014/08/17 职场文书
党校个人总结
2015/03/04 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers
Python闭包的定义和使用方法
2022/04/11 Python