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查询结果返回字典类型的方法
Aug 22 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
Python list操作用法总结
Nov 10 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
元组列表字典(莫烦python基础)
Apr 03 Python
python+openCV利用摄像头实现人员活动检测
Jun 22 Python
python实现大文本文件分割
Jul 22 Python
python3的UnicodeDecodeError解决方法
Dec 20 Python
Python lambda表达式原理及用法解析
Aug 18 Python
关于PyCharm安装后修改路径名称使其可重新打开的问题
Oct 20 Python
python Gabor滤波器讲解
Oct 26 Python
使用Python下载抖音各大V视频的思路详解
Feb 06 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常用工具类大全附全部代码下载
2015/12/07 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
PHP基于session.upload_progress 实现文件上传进度显示功能详解
2019/08/09 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
JavaScript高级程序设计 事件学习笔记
2011/09/10 Javascript
js 使FORM表单的所有元素不可编辑的示例代码
2013/10/17 Javascript
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
jQuery EasyUI 页面加载等待及页面等待层
2017/02/06 Javascript
JS动态修改网页body的背景色实例代码
2017/10/07 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
Node 搭建一个静态资源服务器的实现
2019/05/20 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
pyside写ui界面入门示例
2014/01/22 Python
Python中subprocess的简单使用示例
2015/07/28 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
终端命令查看TensorFlow版本号及路径的方法
2018/06/13 Python
详解Python 正则表达式模块
2018/11/05 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
微博营销计划书
2014/01/10 职场文书
银行简历自我评价
2014/02/11 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
客户答谢会致辞
2015/01/20 职场文书
餐厅开业活动方案
2019/07/08 职场文书