0、准备工作

右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库。

1、转成灰度图像
  1. 调用imread()方法获取我们资源文件夹中的图片lena.png
  2. cvtColor()方法可以让我们的图片转换成任意颜色,第一个参数是我们要转换的图片,第二个参数是要转成的颜色空间,cv2.COLOR_BGR2GRAY就是由BGR变为GRAY,我们日常生活中都是RGB三通道顺序,而在OpenCV中是BGR顺序。
  3. 使用imshow()方法显示图片,窗口名称为Gray Image
  4. waitKey(0)这句可以让窗口一直保持,如果去掉这句,窗口会一闪而过
img=cv2.imread("Resources/lena.png")
imgGray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cv2.imshow("Gray Image",imgGray)
cv2.waitKey(0)

我们来看下效果:

2、高斯模糊
  • 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)

我们来看下效果,左为原图,右是高斯模糊:

3、边缘检测

边缘检测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)

我们运行看下效果:

4、膨胀运算

膨胀运算中,会用到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)

我们看下效果,膨胀使得边缘线变得更厚,全部连接到一块。

5、腐蚀运算

我们对刚刚膨胀的图像进行腐蚀运算,就可以得到闭合的边缘图像。

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)

从左到右依次为膨胀图像、腐蚀图像、边缘检测图像

OK,第二节的内容也是非常简单的,主要是让大家熟悉下OpenCV最基础的应用。眼过千遍不如手过一遍,快去动手敲一遍吧~

3h精通OpenCV(二)-基本功能相关推荐

  1. 3h精通OpenCV(四)-绘制形状与文本

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...

  2. 3h精通OpenCV(六)-图像堆叠

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...

  3. 3h精通OpenCV(五)-透视变换

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...

  4. 3h精通OpenCV(三)-重调大小与图像裁剪

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 我们还要知道在OpenCV中,坐标轴的方向是x轴向右,y轴向下,坐标原 ...

  5. 3h精通OpenCV(一)- 读取图像视频与网络摄像头

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库. 1.读取图像 调用imread()方法获取我们资源文件夹中的图片 使用 ...

  6. 3h精通OpenCV(七)-颜色检测

    0.准备工作 右击新建的项目,选择Python File,新建一个Python文件,然后在开头import cv2导入cv2库,import numpy并且重命名为np. import cv2 imp ...

  7. JavaCV/OpenCV 二维码扫描功能

    JavaCV/OpenCV 二维码扫描功能 怎样配置工程就不再赘述,不清楚的读者可以网上查找资料,二维码扫描功能通过JavaCV实现起来还是挺简单的,主要OpenCV中QRCodeDetector提供 ...

  8. 【Freeswitch从入门到精通】二、初识Freeswitch

    [Freeswitch从入门到精通]二.初识Freeswitch 1.入门术语 1.1 常见短语 1.2 Call Legs 2.历史 3.启动 4.dialplan 路由表 4.1 测试Demo路由 ...

  9. python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例

    python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...

最新文章

  1. Spring Cloud Alibaba 生产实践:Sentinel 进阶应用场景
  2. 12年后,人工智能和人类会是什么样?这是900位专家的看法|报告
  3. Chapter 5 Blood Type——33
  4. php mktime 时间不对_PHP 语言需要避免的 10 大误区
  5. linux下socket调试,linux 下的socket 调试工具 netcat 使用
  6. invoke-rc.d: initscript systemd-logind, action start failed
  7. Capture One Pro 22 for Mac(RAW图像处理软件)v15.1.2.1
  8. JAVA计算机毕业设计实验室耗材管理系统(附源码、数据库)
  9. Node.js视频教程
  10. 吴恩达深度学习C4W1(Pytorch)实现
  11. Mac 终端所有命令失效
  12. 仿微信拼多多实训笔记
  13. Extjs6 学习(一)
  14. 哈工大在CoNLL上斩获全球第四,车万翔博士详解背后的技术细节
  15. 考研计算机专业课961考什么,北航计算机考研(961)经验谈
  16. 正则表达式:提取数字和小数点
  17. error: Apostrophe not preceded by \ (in XXX.)
  18. 2016年ios公开可利用漏洞总结
  19. faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException问题解决
  20. 关于SVN提交不成功问题

热门文章

  1. 机器学习监督学习之分类算法---朴素贝叶斯代码实践
  2. pandas数据处理实践四(时间序列date_range、数据分箱cut、分组技术GroupBy)
  3. vue项目跨域问题完全解决
  4. 华为harmonyOS开发者日,华为首届HarmonyOS开发者创新大赛收官
  5. 算法学习——枚举之最简真分数
  6. BFS POJ 3278 Catch That Cow
  7. sublime Text 2使用小技巧
  8. PHP图形图像的典型应用 --常用图像的应用(统计图)
  9. should, could, would, will, be going to, may, might到底有甚麼不同,又該怎麼用?
  10. 使用批处理文件(batch file)替换字符串