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 Django连接MySQL数据库做增删改查
Nov 07 Python
详解Python中的日志模块logging
Jun 19 Python
Python多线程爬虫简单示例
Mar 04 Python
python+flask实现API的方法
Nov 21 Python
python实现最大优先队列
Aug 29 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
新手常见Python错误及异常解决处理方案
Jun 18 Python
python的flask框架难学吗
Jul 31 Python
python 模块导入问题汇总
Feb 01 Python
Python 爬取淘宝商品信息栏目的实现
Feb 06 Python
python实现三次密码验证的示例
Apr 29 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
PHP数组内存耗用太多问题的解决方法
2010/04/05 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
Thinkphp5框架中引入Markdown编辑器操作示例
2020/06/03 PHP
JavaScript 验证浏览器是否支持javascript的方法小结
2009/05/17 Javascript
javascript时间函数基础介绍
2013/03/28 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
全面理解JavaScript中的继承(必看)
2016/06/16 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
微信小程序教程系列之视图层的条件渲染(10)
2017/04/19 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
Nodejs + Websocket 指定发送及群聊的实现
2020/01/09 NodeJs
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
pycharm创建一个python包方法图解
2019/04/10 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
PyTorch中permute的用法详解
2019/12/30 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
六月份红领巾广播稿
2014/02/03 职场文书
企业法人授权委托书
2014/04/03 职场文书
读书小明星事迹材料
2014/05/03 职场文书
应届生求职信
2014/05/31 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript