当前位置: 首页 > 后端技术 > Python

一篇文章梳理PythonOpenCV的知识体系

时间:2023-03-26 14:20:19 Python

这是一篇学习量很大的文章。温馨提示,本文涉及的知识点较多,建议先收藏,再慢慢学习。本文旨在详细罗列PythonOpenCV的学习路线和重要知识点。核心分为24个小节点,全部掌握,OpenCV入门阶段顺利通过。OpenCV介绍及安装这部分是为了了解OpenCV(开源计算机视觉库)的介绍。OpenCv可以在多个平台上运行。它轻巧高效。它由一系列C函数和少量C++类组成。它提供了Python、Ruby、MATLAB等语言接口,所以在学习的时候要注意查阅资料的语言实现相关问题。现阶段除了安装OpenCV相关库外,建议收集官网、官方手册、官方入门教程。这些是最好的学习资料。模块安装完成后,需要重点测试OpenCV是否安装成功,可以通过Python查询安装的版本。OpenCV模块介绍首先掌握OpenCV全局由哪些模块组成。比如下面的模块,你需要找到下面模块的应用场景和介绍。核心、imgproc、highgui、calib3d、features2d、contrib、flann、gpu、legacy、ml、objdetect、照片、拼接。梳理各模块核心功能,完成第一个OpenCV案例,读取和显示图片。OpenCV图像读取、显示、保存安装OpenCV后,从图像采集开始学习,包括图像本地加载、相机采集图像、视频采集、图像创建。只有先获取图像后,才能对图像进行操作、信息提取、结果输出、图像显示和图像保存。对于一张图片,在OpenCV中读取和显示的步骤如下,大家可以对应代码。图像读取;窗口创建;图像显示;图像保存;资源释放。需要学习的函数有cv2.imread()、cv2.namedWindow()、cv2.imshow()、cv2.imwrite()、cv2.destroyWindow()、cv2.destroyAllWindows()、cv2.imshow()、简历2。cvtColor()、cv2.imwrite()、cv2.waitKey()。摄像头和视频阅读,存第一篇重点学习VideoCapture类,该类常用的方法有:open()函数;isOpened()函数;释放()函数;抓取()函数;检索()函数;获取()函数;设置()函数;除了阅读视频,还需要掌握Opencv提供的VideoWriter类来保存视频文件。学完相关知识后,就可以进行这样一个实验,将一段视频一帧一帧保存为图片。OpenCV常用的数据结构和颜色空间包括Point、Rect、Size和Scalar。另外Python中使用了numpy来操作图片,所以建议提前了解一下numpy。学习了,效果更好。OpenCV中常用的颜色空间有BGR颜色空间、HSV/HLS颜色空间、Lab颜色空间,这些都需要了解,优先考虑BGR颜色空间。OpenCV常用绘图函数掌握以下函数的用法,可以熟练地在Opencv中绘制图形。cv2.line();cv2.circle();cv2.rectangle();cv2.椭圆();cv2.fillPoly();cv2.折线();cv2.putText()。OpenCV接口事件操作鼠标和滑块首先要掌握的函数是鼠标操作消息回调函数cv2.setMouseCallback(),滑块涉及两个函数,分别是:cv2.createTrackbar()和cv2.getTrackbarPos()。掌握以上内容后,可以实现两种情况,一种是在图片上拖动鼠标选择框区域进行截图,另一种是使用滑块使视频倍速播放。图像像素、通道分离与合并了解图像像素矩阵,熟悉图片的像素组成,可以访问指定像素的像素值并进行修改。通道拆分函数cv2.split(),通道合并函数cv2.merge()。图像逻辑运算掌握图像之间的计算,涉及到以下函数:cv2.add();cv2.addWeighted();cv2.subtract();cv2.absdiff();cv2.bitwise_and();cv2.bitwise_not();简历2。按位异或()。您还可以研究图像的乘法和除法。ImageROIandmaskmask这部分属于OpenCV中的重点知识,首先是感兴趣区域ROI,其次是mask掩码(mask)操作。在处理ROI部分时,您还可以了解图像的浅色和深色副本。图像几何变换图像几何变换仍然是基本函数的学习和理解,涉及的内容如下:图像缩放cv2.resize();图像翻译cv2.warpAffine();图像旋转cv2.getRotationMatrix2D();图像转置cv2.transpose();图像镜像cv2.flip();图像重映射cv2.remap()。图像滤波了解什么是滤波,高频和低频滤波,图像滤波函数。线性滤波:框滤波、均值滤波、高斯滤波,非线性滤波:中值滤波、双边滤波、框滤波cv2.boxFilter();均值过滤cv2.blur();高斯滤波cv2.GaussianBlur();中值过滤cv2.medianBlur();双边过滤cv2.lateralFilter()。图像固定阈值和自适应阈值图像阈值处理是图像处理的一个重要基础部分。它被广泛使用。它可以根据灰度级的不同来分割图像的不同部分。经过阈值化处理的图像一般是单通道图像(灰度图像)。核心要掌握的两个函数:固定阈值:cv2.threshold();自适应阈值:cv2.adaptiveThreshold()。图像膨胀和腐蚀膨胀和腐蚀是形态学操作,是基于图像形状的一系列图像处理操作。膨胀和腐蚀是基于突出显示的部分(白色)。Expansion是扩大高亮部分,类似于“场扩张”,corrosion是腐蚀高亮部分,类似于“场被侵蚀”。膨胀腐蚀的应用及作用:消除噪声;分割独立元素或连接相邻元素;找到图像中明显的最大和最小区域;找到图像的梯度;需要掌握的核心函数如下:dilatecv2.dilate();侵蚀cv2.erode()。其他的形态学操作,如开运算、闭运算、tophat、blackhat、形态梯度等,都是基于膨胀和腐蚀的,由cv2.morphologyEx()函数进行操作。边缘检测边缘检测可以提取重要的图像轮廓信息,减少图像内容,可用于图像分割、特征提取等操作。边缘检测的一般步骤:滤波:滤除噪声对检测边缘的影响;enhancement:可以突出像素邻域的强度变化——梯度算子;检测:阈值法判断边缘;常用的边缘检测算子:Canny算子,Canny边缘检测函数cv2.Canny();Sobel算子,Sobel边缘检测函数cv2.Sobel();Scharr算子,Scharr边缘检测函数cv2.Scahrr();拉普拉斯算子,拉普拉斯边缘检测函数cv2.Laplacian()。霍夫变换霍夫变换(HoughTransform)是图像处理中的一种特征提取技术。在一个参数空间中,通过计算累加结果的局部最大值,得到一个符合特定形状的集合,作为霍夫变换。改造的结果。这部分要学习的函数:标准霍夫变换,多尺度霍夫变换cv2.HoughLines();累积概率霍夫变换cv2.HoughLinesP();霍夫圆变换cv2.HoughCricles()。图像直方图计算与绘制先掌握直方图的相关概念,再掌握核心函数,最后通过matplotlib模块绘制直方图。用于计算直方图的函数是cv2.calcHist()。直方图相关应用:直方图均衡化cv2.equalizeHist();直方图比较cv2.compareHist();反投影cv2.calcBackProject()。模板匹配模板匹配是找到一幅图像与另一幅模板图像最匹配(相似)的部分的技术。核心使用的函数如下:模板匹配cv2.matchTemplate();矩阵归一化cv2.normalize();寻找最大价值cv2.minMaxLoc()。轮廓查找和绘制的核心是理解在OpenCV中,查找轮廓就像在黑色背景上查找白色物体一样。常用函数:找轮廓cv2.findContours();绘制轮廓cv2.drawContours()。最后,你应该掌握每个轮廓的操作。轮廓特征属性和应用比较重要,知识点比较多。核心内容和函数如下:寻找凸包cv2.convexHull()和凸性检测cv2.isContourConvex();轮廓外接矩形cv2.boundingRect();等高线最小外接矩形cv2.minAreaRect();轮廓最小外接圆cv2.minEnclosingCircle();轮廓椭圆拟合cv2.fitEllipse();近似多边形曲线cv2.approxPolyDP();计算轮廓面积cv2.contourArea();计算轮廓长度cv2.arcLength();计算点与轮廓的距离和位置关系cv2.pointPolygonTest();形状匹配cv2.matchShapes()。进阶部分——分水岭算法与图像修复掌握分水岭算法原理和核心函数cv2.watershed()。它可以扩展和补充图像修复技术和相关函数cv2.inpaint()。学习后,您可以尝试人像祛斑的应用。GrabCut&FloodFill图像分割和角点检测需要一定的图像专业背景知识。先掌握相关概念知识,重点学习相关功能。GrabCut算法cv2.grabCut();洪水填充算法cv2.floodFill();哈里斯角点检测cv2.cornerHarris();Shi-Tomasi角点检测cv2.goodFeaturesToTrack();亚像素角点检测cv2.cornerSubPix()。特征检测与匹配特征点的检测与匹配是计算机视觉中非常重要的技术之一,广泛应用于物体识别、视觉跟踪、3D重建等领域。OpenCV提供了以下特征检测方法:《FAST》FastFeatureDetector;“STAR”星特征检测器;"SIFT"SIFT(nonfreemodule)Opencv3移除,需要调用xfeature2d库;"SURF"SURF(nonfreemodule)Opencv3移除,需要调用xfeature2d库;"ORB"ORBOpencv3移除,需要调用xfeature2d库;“MSER”MSER;“GFTT”GoodFeaturesToTrackDetector;“HARRIS”(带哈里斯探测器);“密集”DenseFeatureDetector;“SimpleBlob”SimpleBlobDetector。OpenCV应用部分的运动物体跟踪和人脸识别了解什么是运动物体检测。OpenCV中常用的运动目标检测方法有背景减法、帧差法、光流法等。常用的跟踪算法包括meanShift、camShift和粒子滤波器。光流等meanShift跟踪算法cv2.meanShift();CamShift跟踪算法cv2.CamShift()。如果学习人脸识别,涉及到的知识点有:人脸检测:从图像中找到并识别出人脸的位置;人脸识别:从定位的人脸区域区分出人的姓名或其他信息;机器学习。