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

一篇文章梳理清楚 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-06-03 17:37:44
自2019年创1085万人次纪录后,北京地铁再未重回千万大关

自2019年创1085万人次纪录后,北京地铁再未重回千万大关

齐天候
2026-06-03 19:30:26
文件显示特朗普政府多名官员持有SpaceX股份

文件显示特朗普政府多名官员持有SpaceX股份

界面新闻
2026-06-04 10:14:55
震惊!一大学女生得知母亲怀孕后崩溃拉黑,聊天记录流出,引热议

震惊!一大学女生得知母亲怀孕后崩溃拉黑,聊天记录流出,引热议

火山詩话
2026-06-04 07:09:23
“一个月5次,超过按50万一次收费!她被誉为“亚洲第一美人”

“一个月5次,超过按50万一次收费!她被誉为“亚洲第一美人”

阿振观点
2026-06-04 12:21:23
就今晚!油价大幅调整

就今晚!油价大幅调整

南通濠生活
2026-06-04 10:51:16
伤亡惨重,莫迪哀悼

伤亡惨重,莫迪哀悼

环球时报国际
2026-06-04 08:01:54
13中3成卧底!福克斯总决赛G1无脑犯规葬送马刺,赶紧扶正哈珀

13中3成卧底!福克斯总决赛G1无脑犯规葬送马刺,赶紧扶正哈珀

仰卧撑FTUer
2026-06-04 11:46:25
媒体:继稻城亚丁后湖北神农架也被指“圈路收费”,游客被迫多绕百公里

媒体:继稻城亚丁后湖北神农架也被指“圈路收费”,游客被迫多绕百公里

澎湃新闻
2026-06-03 17:13:12
马刺榜眼16+8创5项纪录:超妖刀上将队史第一 末节0分决战遭弃用

马刺榜眼16+8创5项纪录:超妖刀上将队史第一 末节0分决战遭弃用

醉卧浮生
2026-06-04 11:44:50
当Token飙到天文数字,高通用「计算连续体」重搭智能体新基建

当Token飙到天文数字,高通用「计算连续体」重搭智能体新基建

机器之心Pro
2026-06-03 16:05:35
孩子成为空调第二节电池副管理员,母亲高兴炫耀,评论区遍地同款

孩子成为空调第二节电池副管理员,母亲高兴炫耀,评论区遍地同款

谭谈社会
2026-06-03 19:08:00
李若彤回怼“连姑姑都下沉演短剧了”:我是演员,又不是天上神仙,角色合适就愿意演

李若彤回怼“连姑姑都下沉演短剧了”:我是演员,又不是天上神仙,角色合适就愿意演

台州交通广播
2026-06-03 23:21:05
215票对208票,美众议院要求特朗普停止动武并撤军!科威特遭袭,特朗普帮伊朗辩护:凡事皆有因!伊朗:科威特机场是爱国者导弹“误炸”的

215票对208票,美众议院要求特朗普停止动武并撤军!科威特遭袭,特朗普帮伊朗辩护:凡事皆有因!伊朗:科威特机场是爱国者导弹“误炸”的

大风新闻
2026-06-04 08:28:24
跟儿女相处:讲道理是下策,闭嘴是中策,上策你绝对想不到

跟儿女相处:讲道理是下策,闭嘴是中策,上策你绝对想不到

热心市民小黄
2026-06-03 13:30:41
太过分!上海一保安公司负责人克扣盒饭,5年从保安口中“抠”出餐费19.8万元,用于还债及日常吃喝玩乐

太过分!上海一保安公司负责人克扣盒饭,5年从保安口中“抠”出餐费19.8万元,用于还债及日常吃喝玩乐

新民晚报
2026-06-04 12:41:41
巴西矿商终于说出实话:把稀土低价卖给欧美,就是为了对付中国?

巴西矿商终于说出实话:把稀土低价卖给欧美,就是为了对付中国?

用冷眼洞悉世界
2026-06-04 11:39:10
渣友!广西14岁女生岸边溺亡:同伴手拿奶茶,蹲坐旁观,一直嬉笑

渣友!广西14岁女生岸边溺亡:同伴手拿奶茶,蹲坐旁观,一直嬉笑

李晚书
2026-06-04 09:40:12
劝大家思想再开放,也不要让孩子随母姓!45岁的我,已经受到教训

劝大家思想再开放,也不要让孩子随母姓!45岁的我,已经受到教训

小马达情感故事
2026-06-03 19:55:03
性资源分配不均带来的性压抑已经变态如斯!

性资源分配不均带来的性压抑已经变态如斯!

黯泉
2026-06-03 21:09:03
2026-06-04 15:00:49
Python猫 incentive-icons
Python猫
人生苦短,我用Python。博客:https://pythoncat.top
729文章数 8120关注度
往期回顾 全部

科技要闻

历史最大IPO!马斯克下周冲击万亿富豪

头条要闻

江苏一单亲妈妈和小12岁男子姐弟恋 怀孕后男友玩失联

头条要闻

江苏一单亲妈妈和小12岁男子姐弟恋 怀孕后男友玩失联

体育要闻

王俊杰11前板成第一尖刀 媒体人:独一档

娱乐要闻

难怪奚梦瑶能嫁入豪门

财经要闻

SpaceX发行价135美元 6月12日上市交易

汽车要闻

北京现代5月销量强势反弹:国内17065辆 出口环比翻倍

态度原创

健康
旅游
家居
房产
手机

违规干细胞抗衰美容,为何肆无忌惮

旅游要闻

神农架景区被吐槽,道歉了

家居要闻

220平对味儿家 空间情绪宅

房产要闻

震撼!海口顶豪“素颜出境”,直接顶穿品质天花板!

手机要闻

苹果入场能掀起水花吗!Q1中国折叠屏市场:华为稳居第一 荣耀紧随其后

无障碍浏览 进入关怀版