【光电智造】一篇文章就梳理清楚了PythonOpenCV的知识体系

今日光电 2024-08-30 18:01

 今日光电 

     有人说,20世纪是电的世纪,21世纪是光的世纪;知光解电,再小的个体都可以被赋能。追光逐电,光赢未来...欢迎来到今日光电!




----追光逐电 光赢未来----

这是一篇学习量很大的文章

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

本篇文章目的将为你详细罗列 Python OpenCV 的学习路线与重要知识点。核心分成 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 中常用的运动物体检测方法有背景减法帧差法光流法,跟踪算法常用的有 meanShift, camShift粒子滤波, 光流法 等。

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

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

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

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

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

  • 机器学习。

来源:新机器视觉


申明:感谢原创作者的辛勤付出。本号转载的文章均会在文中注明,若遇到版权问题请联系我们处理。


 

----与智者为伍 为创新赋能----


【说明】欢迎企业和个人洽谈合作,投稿发文。欢迎联系我们
诚招运营合伙人 ,对新媒体感兴趣,对光电产业和行业感兴趣。非常有意者通过以下方式联我们!条件待遇面谈
投稿丨合作丨咨询

联系邮箱:uestcwxd@126.com

QQ:493826566




评论
  • 分享一个最新的便携微孔雾化装置的原理图,主要功能为驱动微孔雾化,兼具外围的升压和检水。适合:可以适用于医用微网雾化器、桌面加湿器、补水仪或者香氛仪的雾化驱动电路参考。特点:整体硬件成本低,具备自动扫频追频以及自动检水功能,按键和指示灯设计方便简洁主要逻辑功能需求雾化片:108KHz,16mm直径,微孔超声波雾化片雾化驱动:自动扫频追频,雾化量另行标定,名义雾化速率:4mg/s按键1: 长按开机,再次长按关机;关机状态下进入低功耗以节省电池电量;按键1在开机状态下循环,高-中-低档位控制雾化速率档
    努力精进的硬件 2025-12-30 09:53 1206浏览
  • 2026年了,过去的一年工作和家庭事情都比较多,来面包板比较少。2026年事情好了很多,可以多来面包板分享自己的工作。 在新的一年里。工作方面,继续努力,自己的公司把业务都办理完成,能顺利营业就可以,主要也是为了自己工作方便。主业还是多参加比赛。具体的目标:(1)公司工商注册等都完成。(2)参加教学比赛2次。(3)完成论文3篇,一个项目论文,一个会议论文,这个是确定的,必须完成,自己在写一个论文。(4)参加一次技能比赛,视觉的比赛。 有时候运气也很重要,不是自己的也不去强求了
    curton 2026-01-05 09:59 77779浏览
  • 在高速数据传输的现代世界中,光模块扮演着至关重要的角色。它们如同信息高速公路上的“快递员”,负责将电信号转换为光信号进行远距离传输,再将光信号转换回电信号供设备使用。然而,在这看似简单的光-电转换过程中,有一个不起眼却不可或缺的元件在默默工作——它就是晶振,或称石英晶体振荡器。晶振:电子设备的“心跳”晶振的核心功能是产生稳定的时钟信号。想象一下,如果一场音乐会没有统一的节拍,演奏会变得混乱不堪。同样,在电子设备中,晶振提供的高精度时钟信号就像乐队的指挥,确保所有部件同步工作。在光模块中,这个“指
    TKD泰晶科技 2026-01-04 15:34 1819浏览
  •        面包板社区选品绝对优品!首先感谢面包板及工作人员在这之前策划了很多可以赚取E币的活动(发技术帖、分享项目经验、回答问题、参会、11-12月每天坚持签到领E币),每一个都几乎与了,所以获利不少,这次活动力度之大更是前所未有,买东西返现!!!再次感谢,比心!!!来看看我买了哪些好宝贝:                     
    甜椒的尾巴 2025-12-31 09:37 2572浏览
  • 在全球变暖、环境污染与生物多样性下降的生态危机下,发展科技的目的已不仅仅在于为各行各业提质增效,还在于促进人与自然的和谐发展。LoRaWAN作为一种面向大规模部署应用的低功耗IoT通信技术,正凭借着低功耗、远距离、大规模连接和低部署成本等特性,成为连接人类社会与自然生态的重要“沟通桥梁”。这座“沟通桥梁”不仅能将自然环境中原本难以察觉、零散分布的生态变化持续转化为可采集与分析的数据形态,使森林、河流、湿地与野生生物“开口说话”,还能帮助管理者在广袤、偏远、环境恶劣的区域中长期、稳定地获取生态数据
    华普微HOPERF 2026-01-13 15:58 405浏览
  • 在智能家居的网络架构中,Wi-Fi、蓝牙、Zigbee与Thread等通信协议是实现设备无线互联与协同控制的底层逻辑。然而,这些协议在标准体系、寻址方式与网络管理机制上却彼此独立,缺乏统一的互操作框架,在进行跨协议组网时需要依赖中心网关作为“翻译桥梁”,这不仅抬高了全屋智能的部署成本,还增加了系统的网络复杂度与不稳定性。在此背景下,行业迫切地需要一种能跨协议、跨生态与跨品牌通信的统一标准来破局,从而在根本上解决智能家居场景中设备难互联、生态难融合与通信不稳定等问题,将智能家居从“平台主导”阶段全
    华普微HOPERF 2026-01-07 11:08 1406浏览
  • ESP32S3小智开发板烧录指南ESP32S3小智开发板烧录核心需做好硬件接线、烧录模式操作与软件配置,步骤如下: 1. 硬件接线:用USB转TTL模块连接,3.3V接板载3.3V(严禁5V)、GND共地,模块TX接开发板RX(GPIO44)、RX接TX(GPIO43),确保接线无松动。 2. 进入烧录模式:按住板载BOOT键不松,快速按EN复位键,先松EN再松BOOT,此时开发板进入烧录模式。  3. 软件配置:IDF环境下先执行`idf.py set-
    丙丁先生 2026-01-10 12:33 69421浏览
  • 文:郭楚妤编辑:cc孙聪颖在硬核的美国科技展上,看到软萌的国宝大熊猫,是不是有一种反差感?这次,长虹将这份独特的“AI科技+国宝熊猫文化”带到了美国拉斯维加斯的CES展上,通过熊猫主题AI家电,以及全品类AI产品,在全球舞台上讲述着属于“东方智慧”的故事。于是,在此次CES展会上,你可以看到AI科技被赋予了文化的温度和脉络。打开长虹AI TV,智能体伙伴“熊猫小白”上线,化身全天候全场景的陪伴者。打开电视里的“熊猫乐园”,能够实时看到熊猫啃竹子、玩耍的治愈画面,仿佛把四川的竹林生态带到了身边。长
    华尔街科技眼 2026-01-08 15:22 1415浏览
  • 文:候煜、陈昊编辑:cc孙聪颖多年前,中国入世谈判首席代表龙永图在接受《华尔街科技眼》创始人采访时曾抛出一个鲜明观点:家电行业是国内“最皮实”的行业。在入世初期各领域普遍需要政策保护,唯独家电行业未受特殊庇护,却走出了相对稳健的发展路径。无论是全球市场知名度,还是行业整体营收规模,家电行业长期保持着稳固态势。而且,相较于始终站在风口、聚焦聚光灯下的互联网行业,家电行业始终略显低调。“稳”意味着行业变数少,也意味着从业者可以有一定的路径依赖。曝光度低意味着相对较少的关注和解读,于职业经理人而言,反
    华尔街科技眼 2025-12-30 12:56 2306浏览
  • 坚 守2025年于风雨飘摇中逝去。多年来,我如老牛耕垦,在这片希望的田野上持续耕耘。尽管每年收成不一、亦因人而异,但“老骥伏枥,志在千里”的古训,始终激励着我前行。过去一年,职场中虽遇波澜,然心境渐趋平和。恰如苏轼《观潮》诗中所喻:庐山烟雨浙江潮,未至千般恨不消。到得还来别无事,庐山烟雨浙江潮。历事后方知,潮起潮落不过常态,唯有坚守本心、专注所为,方能穿透迷雾、踏实前行。一、专利布局与维护全年围绕核心技术及新产品,累计申报发明专利3项、实用新型专利1项,其中2项发明专利已进入实质审查阶段。系统
    广州铁金刚 2026-01-09 10:40 1561浏览
  •         本月17日南京地区发生了一次导航严重偏离的事件,一时互联网、金融、军迷等人群议论纷纷。19号,“南京卫星协会”微信公众号给出了一篇分析文章,官媒和社媒纷纷转载,视为结案。但是不知道为什么,今天我去找了一下,没找到这篇文章。                        根据公开资料,我把北斗、GPS和G
    电子知识打边炉 2025-12-28 22:55 991浏览
  • 2026年1月6日,美国CES展会上有一则重磅消息,芬兰初创公司Donut Lab正式推出全球首款可量产全固态电池,该电池不仅实现5分钟满电、10万次循环寿命的性能飞跃,更已完成OEM量产适配,搭载该电池的电动摩托车将于今年第一季度交付用户。这一突破标志着长期停留在实验室阶段的全固态电池技术正式迈入商业化落地阶段,有望彻底解决传统锂电池续航短、充电慢、安全隐患三大核心痛点,为新能源产业带来颠覆性变革。这款全固态电池的性能参数堪称“碾压级”超越传统锂电池。据官方披露,其能量密度达到400Wh/kg
    面包超人Tech 2026-01-09 09:23 1583浏览
  •   今天,做清理,想把闲置有点毛病了的一个老收录机看看还能不能用?  拿起电源线,呵呵,这线早就变硬了,拿到插头,准备插到电源插座上,哈哈,不声不响,插头断掉啦!  拿到了工作台,准备行动,拆解、检查、判断可否修复?  这可是一台够老的机器啦!1985年7月3日买的一台三洋牌手提式立体声收录机,那时是很时兴时髦的产品,发票和说明书都在。  前后左右上下都看了看,   SANYO STEREO RADIO CASSETTE RECORDER MODEL NO. M9805F  SANYO ELE
    自做自受 2026-01-06 21:15 1765浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦