网易首页 > 网易号 > 正文 申请入驻

一篇文章梳理清楚 Python OpenCV 的知识体系

0
分享至

  △点击上方“Python猫”关注 ,回复“1”领取电子书

  作者:梦想橡皮擦

  来源:梦想橡皮擦

  观前提醒,本篇文章涉及知识点巨大,建议先收藏,再慢慢学习。

  本篇文章目的将为你详细罗列 Python OpenCV 的学习路线与重要知识点。核心分成 24 个小节点,全部掌握,OpenCV 入门阶段就顺利通过了。

  •   1. OpenCV 初识与安装

  •   2. OpenCV 模块简介

  •   3. OpenCV 图像读取,显示,保存

  •   4. 摄像头和视频读取,保存

  •   5. OpenCV 常用数据结构和颜色空间

  •   6. OpenCV 常用绘图函数

  •   7. OpenCV 界面事件操作之鼠标与滑动条

  •   8. 图像像素、通道分离与合并

  •   9. 图像逻辑运算

  •   10. 图像 ROI 与 mask 掩膜

  •   11. 图像几何变换

  •   12. 图像滤波

  •   13. 图像固定阈值与自适应阈值

  •   14. 图像膨胀腐蚀

  •   15. 边缘检测

  •   16. 霍夫变换

  •   17. 图像直方图计算及绘制

  •   18. 模板匹配

  •   19. 轮廓查找与绘制

  •   20. 轮廓特征属性及应用

  •   21. 高级部分-分水岭算法及图像修补

  •   22. GrabCut & FloodFill 图像分割、角点检测

  •   23. 特征检测与匹配

  •   24. OpenCV 应用部分之运动物体跟踪与人脸识别

  1. OpenCV 初识与安装

  本部分要了解 OpenCV (Open Source Computer Vision Library)的相关简介,OpenCv 可以运行在多平台之上,轻量级而且高效,由一系列 C 函数和少量 C++类构成,提供了 Python、Ruby、MATLAB 等语言的接口,所以在学习的时候,要注意查阅资料的语言实现相关问题。

  这个阶段除了安装 OpenCV 相关库以外,建议收藏官方网址,官方手册,官方入门教程,这些都是最佳的学习资料。

  模块安装完毕,需要重点测试 OpenCV 是否安装成功,可通过 Python 查询安装版本。

  2. OpenCV 模块简介

  先从全局上掌握 OpenCV 都由哪些模块组成。例如下面这些模块,你需要找到下述模块的应用场景与简介。

  coreimgprochighguicalib3dfeatures2dcontribflanngpulegacymlobjdetectphotostitching

  整理每个模块的核心功能,并完成第一个 OpenCV 案例,读取显示图片。

  3. OpenCV 图像读取,显示,保存

  安装 OpenCV 之后,从图像获取开始进行学习,包含本地加载图片,相机获取图片,视频获取,创建图像等内容。

  只有先获取图像之后,才能对图像进行操作处理,信息提取,结果输出,图像显示图像保存

  对于一个图像而言,在 OpenCV 中进行读取展示的步骤如下,你可以将其代码进行对应。

  1.   图像读取;

  2.   窗口创建;

  3.   图像显示;

  4.   图像保存;

  5.   资源释放。

  涉及需要学习的函数有cv2.imread()cv2.namedWindow()cv2.imshow()cv2.imwrite()cv2.destroyWindow()cv2.destroyAllWindows()cv2.imshow()cv2.cvtColor()cv2.imwrite()cv2.waitKey()

  4. 摄像头和视频读取,保存

  第一个要重点学习VideoCapture类,该类常用的方法有:

  •   open() 函数;

  •   isOpened() 函数;

  •   release() 函数;

  •   grab() 函数;

  •   retrieve() 函数;

  •   get() 函数;

  •   set() 函数;

  除了读取视频外,还需要掌握 Opencv 提供的VideoWriter类,用于保存视频文件。

  学习完相关知识之后,可以进行这样一个实验,将一个视频逐帧保存为图片。

  5. OpenCV 常用数据结构和颜色空间

  这部分要掌握的类有Point类、Rect类、Size类、Scalar类,除此之外,在 Python 中用numpy对图像进行操作,所以numpy相关的知识点,建议提前学习,效果更佳。

  OpenCV 中常用的颜色空间有 BGR 颜色空间、HSV/HLS 颜色空间、Lab 颜色空间,这些都需要了解,优先掌握 BGR 颜色空间。

  6. OpenCV 常用绘图函数

  掌握如下函数的用法,即可熟练的在 Opencv 中绘制图形。

  •   cv2.line();

  •   cv2.circle();

  •   cv2.rectangle();

  •   cv2.ellipse();

  •   cv2.fillPoly();

  •   cv2.polylines();

  •   cv2.putText()。

7. OpenCV 界面事件操作之鼠标与滑动条

  第一个要掌握的函数是鼠标操作消息回调函数,cv2.setMouseCallback(),滑动条涉及两个函数,分别是:cv2.createTrackbar()cv2.getTrackbarPos()

  掌握上述内容之后,可以实现两个案例,其一为鼠标在一张图片上拖动框选区域进行截图,其二是通过滑动条让视频倍速播放。

  8. 图像像素、通道分离与合并

  了解图像像素矩阵,熟悉图片的像素构成,可以访问指定像素的像素值,并对其进行修改。

  通道分离函数cv2.split(),通道合并函数cv2.merge()

  9. 图像逻辑运算

  掌握图像之间的计算,涉及函数如下:

  •   cv2.add();

  •   cv2.addWeighted();

  •   cv2.subtract();

  •   cv2.absdiff();

  •   cv2.bitwise_and();

  •   cv2.bitwise_not();

  •   cv2.bitwise_xor()。

  还可以研究图像乘除法。

  10. 图像 ROI 与 mask 掩膜

  本部分属于 OpenCV 中的重点知识,第一个为感兴趣区域 ROI,第二个是 mask 掩膜(掩码)操作 。

  学习 ROI 部分时,还可以学习一下图像的深浅拷贝。

  11. 图像几何变换

  图像几何变换依旧是对基础函数的学习与理解,涉及内容如下:

  •   图像缩放 cv2.resize();

  •   图像平移 cv2.warpAffine();

  •   图像旋转 cv2.getRotationMatrix2D();

  •   图像转置 cv2.transpose();

  •   图像镜像 cv2.flip();

  •   图像重映射 cv2.remap()。

12. 图像滤波

  理解什么是滤波,高频与低频滤波,图像滤波函数。

  线性滤波:方框滤波、均值滤波、高斯滤波, 非线性滤波:中值滤波、双边滤波,

  •   方框滤波 cv2.boxFilter();

  •   均值滤波 cv2.blur();

  •   高斯滤波 cv2.GaussianBlur();

  •   中值滤波 cv2.medianBlur();

  •   双边滤波 cv2.bilateralFilter()。

13. 图像固定阈值与自适应阈值

  图像阈值化是图像处理的重要基础部分,应用很广泛,可以根据灰度差异来分割图像不同部分,阈值化处理的图像一般为单通道图像(灰度图),核心要掌握的两个函数:

  •   固定阈值:cv2.threshold();

  •   自适应阈值:cv2.adaptiveThreshold()。

14. 图像膨胀腐蚀

  膨胀、腐蚀属于形态学的操作,是图像基于形状的一系列图像处理操作。膨胀腐蚀是基于高亮部分(白色)操作的,膨胀是対高亮部分进行膨胀,类似“领域扩张”, 腐蚀是高亮部分被腐蚀,类似“领域被蚕食”。

  膨胀腐蚀的应用和功能:

  •   消除噪声;

  •   分割独立元素或连接相邻元素;

  •   寻找图像中的明显极大值、极小值区域;

  •   求图像的梯度;

  核心需要掌握的函数如下:

  •   膨胀 cv2.dilate();

  •   腐蚀 cv2.erode()。

  形态学其他操作,开运算闭运算顶帽黑帽形态学梯度这些都是基于膨胀腐蚀基础之上,利用cv2.morphologyEx()函数进行操作。

  15. 边缘检测

  边缘检测可以提取图像重要轮廓信息,减少图像内容,可用于分割图像、特征提取等操作。

  边缘检测的一般步骤:

  •   滤波:滤出噪声対检测边缘的影响 ;

  •   增强:可以将像素邻域强度变化凸显出来---梯度算子 ;

  •   检测:阈值方法确定边缘 ;

  常用边缘检测算子:

  •   Canny 算子,Canny 边缘检测函数 cv2.Canny();

  •   Sobel 算子,Sobel 边缘检测函数 cv2.Sobel();

  •   Scharr 算子,Scharr 边缘检测函数 cv2.Scahrr() ;

  •   Laplacian 算子,Laplacian 边缘检测函数 cv2.Laplacian()。

16. 霍夫变换

  霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中,通过计算累计结果的局部最大值,得到一个符合该特定形状的集合,作为霍夫变换的结果。

  本部分要学习的函数:

  •   标准霍夫变换、多尺度霍夫变换 cv2.HoughLines() ;

  •   累计概率霍夫变换 cv2.HoughLinesP() ;

  •   霍夫圆变换 cv2.HoughCricles() 。

17. 图像直方图计算及绘制

  先掌握直方图相关概念,在掌握核心函数,最后通过matplotlib模块对直方图进行绘制。计算直方图用到的函数是cv2.calcHist()

  直方图相关应用:

  •   直方图均衡化 cv2.equalizeHist();

  •   直方图对比 cv2.compareHist();

  •   反向投影 cv2.calcBackProject()。

18. 模板匹配

  模板匹配是在一幅图像中寻找与另一幅模板图像最匹配(相似)部分的技术。

  核心用到的函数如下:

  •   模板匹配 cv2.matchTemplate();

  •   矩阵归一化 cv2.normalize();

  •   寻找最值 cv2.minMaxLoc()。

19. 轮廓查找与绘制

  核心要理解到在 OpenCV 中,查找轮廓就像在黑色背景中找白色物体。

  常用函数:

  •   查找轮廓 cv2.findContours();

  •   绘制轮廓 cv2.drawContours() 。

  最后应该掌握针对每个轮廓进行操作。

  20. 轮廓特征属性及应用

  这部分内容比较重要,并且知识点比较多,核心内容与函数分别如下:

  •   寻找凸包 cv2.convexHull() 与 凸性检测 cv2.isContourConvex();

  •   轮廓外接矩形 cv2.boundingRect();

  •   轮廓最小外接矩形 cv2.minAreaRect();

  •   轮廓最小外接圆 cv2.minEnclosingCircle();

  •   轮廓椭圆拟合 cv2.fitEllipse();

  •   逼近多边形曲线 cv2.approxPolyDP();

  •   计算轮廓面积 cv2.contourArea();

  •   计算轮廓长度 cv2.arcLength();

  •   计算点与轮廓的距离及位置关系 cv2.pointPolygonTest();

  •   形状匹配 cv2.matchShapes()。

21. 高级部分-分水岭算法及图像修补

  掌握分水岭算法的原理,掌握核心函数cv2.watershed()

  可以扩展补充图像修补技术及相关函数cv2.inpaint(),学习完毕可以尝试人像祛斑应用。

  22. GrabCut & FloodFill 图像分割、角点检测

  这部分内容都需要一些图像专业背景知识,先掌握相关概念知识,再重点学习相关函数。

  •   GrabCut 算法 cv2.grabCut();

  •   漫水填充算法 cv2.floodFill();

  •   Harris 角点检测 cv2.cornerHarris();

  •   Shi-Tomasi 角点检测 cv2.goodFeaturesToTrack();

  •   亚像素角点检测 cv2.cornerSubPix()。

23. 特征检测与匹配

  特征点的检测和匹配是计算机视觉中非常重要的技术之一, 在物体识别、视觉跟踪、三维重建等领域都有很广泛的应用。

  OpenCV 提供了如下特征检测方法:

  •   “FAST” FastFeatureDetector;

  •   “STAR” StarFeatureDetector;

  •   “SIFT” SIFT(nonfree module) Opencv3 移除,需调用 xfeature2d 库;

  •   “SURF” SURF(nonfree module) Opencv3 移除,需调用 xfeature2d 库;

  •   “ORB” ORB Opencv3 移除,需调用 xfeature2d 库;

  •   “MSER” MSER;

  •   “GFTT” GoodFeaturesToTrackDetector;

  •   “HARRIS” (配合 Harris detector);

  •   “Dense” DenseFeatureDetector;

  •   “SimpleBlob” SimpleBlobDetector。

24. OpenCV 应用部分之运动物体跟踪与人脸识别

  了解何为运动物体检测,OpenCV 中常用的运动物体检测方法有背景减法帧差法光流法,跟踪算法常用的有meanShiftcamShift粒子滤波光流法等。

  •   meanShift 跟踪算法 cv2.meanShift();

  •   CamShift 跟踪算法 cv2.CamShift()。

  如果学习人脸识别,涉及的知识点为:

  •   人脸检测:从图像中找出人脸位置并标识;

  •   人脸识别:从定位到的人脸区域区分出人的姓名或其它信息;

  •   机器学习。

  Python猫技术交流群开放啦!群里既有国内一二线大厂在职员工,也有国内外高校在读学生,既有十多年码龄的编程老鸟,也有中小学刚刚入门的新人,学习氛围良好!想入群的同学,请在公号内回复『交流群』,获取猫哥的微信 (谢绝广告党,非诚勿扰!)~

  近期热门文章推荐:

  按下电源后的几秒钟,CPU在干嘛?

  弃繁就简!一行代码搞定 Python 日志!

  Python 有可能删除 GIL 吗?

  Python 协程与 Go 协程的区别(一)

  Python 为什么要有 pass 语句?

  感谢创作者的好文

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
毛巾老板自证后续:接住流量亲自直播卖货,二儿子出镜又帅又高

毛巾老板自证后续:接住流量亲自直播卖货,二儿子出镜又帅又高

白面书誏
2026-05-19 00:20:33
上海交大女生私吞竞赛奖金,AI造假露馅!校方重磅处分来了

上海交大女生私吞竞赛奖金,AI造假露馅!校方重磅处分来了

行者聊官
2026-05-18 19:14:47
这片若能如期上映,中国电影已无未来可言

这片若能如期上映,中国电影已无未来可言

闲人电影
2026-05-18 18:09:09
福建毒杨梅再升级!背后大佬放狠话,死亡威胁记者,果农下场更惨

福建毒杨梅再升级!背后大佬放狠话,死亡威胁记者,果农下场更惨

冷紫葉
2026-05-17 19:40:53
社评:欧盟对华经贸“连环招”打错了算盘

社评:欧盟对华经贸“连环招”打错了算盘

环球网资讯
2026-05-17 23:30:07
男子殴打未满2个月女儿 重庆巴南警方:涉嫌虐待罪已被刑拘

男子殴打未满2个月女儿 重庆巴南警方:涉嫌虐待罪已被刑拘

新京报
2026-05-18 17:36:13
即将重返国米,帕瓦尔社媒发文告别马赛

即将重返国米,帕瓦尔社媒发文告别马赛

懂球帝
2026-05-19 04:02:27
Shams:赛季结束以来,几乎所有争冠球队都联系过詹姆斯

Shams:赛季结束以来,几乎所有争冠球队都联系过詹姆斯

懂球帝
2026-05-19 07:36:05
浪姐史上翻车最快的人出现了,网友:人不红果然是有原因的!

浪姐史上翻车最快的人出现了,网友:人不红果然是有原因的!

两只米老鼠
2026-04-14 03:27:12
一张合影价值千万!黄仁勋到访老字号,老板娘情商格局直接拉满

一张合影价值千万!黄仁勋到访老字号,老板娘情商格局直接拉满

魔都姐姐杂谈
2026-05-18 12:56:52
中国造导弹FN-16在乌克兰捅破天:打下之后却没人知道枪是谁递的

中国造导弹FN-16在乌克兰捅破天:打下之后却没人知道枪是谁递的

涵豆说娱
2026-05-14 19:39:29
老了才看透:父弱母强的家庭,养出来的孩子,大多是这两种结局

老了才看透:父弱母强的家庭,养出来的孩子,大多是这两种结局

心理观察局
2026-05-11 10:00:27
如果你对孩子越来越好,越来越热情,越来越包容,越来越顺从,越来越宠溺,那么孩子一定会成为天底下最不珍惜你的那个人

如果你对孩子越来越好,越来越热情,越来越包容,越来越顺从,越来越宠溺,那么孩子一定会成为天底下最不珍惜你的那个人

窈窕妈妈
2026-05-18 19:04:15
凯恩前3个德甲赛季均夺金靴,创德甲纪录

凯恩前3个德甲赛季均夺金靴,创德甲纪录

懂球帝
2026-05-18 22:01:33
57岁高晓松近况曝光!亲自澄清网络谣言,自己每天就是读书种菜

57岁高晓松近况曝光!亲自澄清网络谣言,自己每天就是读书种菜

小徐讲八卦
2026-05-19 09:29:29
张雪峰女儿刚刚发文祝爸爸生日快乐,最近成绩都有90分就是想他了

张雪峰女儿刚刚发文祝爸爸生日快乐,最近成绩都有90分就是想他了

九方鱼论
2026-05-18 20:40:42
特朗普推迟打击但拒不让步 伊朗再提开辟新战线 美伊局势最新速览→

特朗普推迟打击但拒不让步 伊朗再提开辟新战线 美伊局势最新速览→

海外网
2026-05-19 07:12:23
为什么老外的家进门就有松弛感,而我们的家却冰冷冷?真相扎心了

为什么老外的家进门就有松弛感,而我们的家却冰冷冷?真相扎心了

阿离家居
2026-05-18 12:50:24
重要变动!央视直播国足对阵澳大利亚,U17亚洲杯备战争冠

重要变动!央视直播国足对阵澳大利亚,U17亚洲杯备战争冠

等等talk
2026-05-19 10:26:10
人体神奇的自愈力,读一遍受益一生

人体神奇的自愈力,读一遍受益一生

神奇故事
2026-05-17 23:04:15
2026-05-19 10:56:50
Python猫 incentive-icons
Python猫
人生苦短,我用Python。博客:https://pythoncat.top
729文章数 8120关注度
往期回顾 全部

科技要闻

苹果WWDC26定档6月9日凌晨:iOS27将亮相

头条要闻

夏奇拉再为世界杯献唱 曾用一瓶果酱抓到球星男友出轨

头条要闻

夏奇拉再为世界杯献唱 曾用一瓶果酱抓到球星男友出轨

体育要闻

58顺位的保罗,最强第三中锋

娱乐要闻

张雪峰42岁冥诞,学生家长自发缅怀

财经要闻

从卖流量到卖Token,运营商算力生意破局

汽车要闻

40.98万起!充电5分钟纯电续航420km 腾势N9闪充版胜算有多少?

态度原创

教育
健康
亲子
数码
军事航空

教育要闻

以感恩为根,以学习为帆,以坚持为桨——任艳华家教好故事

专家揭秘干细胞回输的安全风险

亲子要闻

孩子整天躺平玩手机,实则内心在疯狂内耗! 三不原则帮孩子走出困

数码要闻

中国首款全自研显卡!砺算LX 7G100终于要开售:5月20日正式开启预约

军事要闻

莫斯科遭一年多来最大规模无人机袭击 3死18伤

无障碍浏览 进入关怀版