OpenCV是最受欢迎的计算机视觉库之一。它包含执行图像和视频处理的工具。
当OpenCV 3..4.1是OpenCV 2.4的改进版本时, 它引入了新的算法和功能。尽管某些现有模块已被重写并移至子模块。在本文中, 我将重点介绍在OpenCV 2.4的现有模块中所做的更改以及如何在OpenCV 3.4.1中实现它们。
特征检测
一些特征检测算法(FREAK, BRIEF, SIFT和SURF)已移至opencv_contrib存储库和xfeatures2d模块。 SIFT和SURF算法由其创建者申请专利, 并且并非免费。尽管它们可以用于教育和研究目的。
SIFT:创建SIFT特征检测器对象。
# OpenCV 2.4
sift = cv2.SIFT()
# OpenCV 3.4.1
sift = cv2.xfeatures2d.SIFT_create()
表面:创建SURF特征检测器对象
# OpenCV 2.4
surf = cv2.SURF()
# OpenCV 3.4.1
surf = cv2.xfeatures2d.SURF_create()
快速:创建FAST检测器对象
# OpenCV 2.4
fast = cv2.FastFeatureDetector()
# OpenCV 3.4.1
fast = cv2.FastFeatureDetector_create()
天体:创建ORB检测器对象
# OpenCV 2.4
orb = cv2.ORB()
# OpenCV 3.4.1
orb = cv2.ORB_create()
简单的斑点检测器
# OpenCV 2.4
detector = cv2.SimpleBlobDetector()
# OpenCV 3.4.1
detector = cv2.SimpleBlobDetector_create()
循环检测
OpenCV使用霍夫梯度法来检测使用边缘的梯度信息的圆。
# OpenCV 3.4.1
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 4 , 10 )
方法的名称已从更改为CV_HOUGH_GRADIENT在2.4版本中HOUGH_GRADIENT在3.4版本中。
轮廓
最初findContours()函数在OpenCV 2.4中仅返回两个参数。从OpenCV 3.2开始, 对该函数进行了修改以返回三个参数, 即修改后的图像, 轮廓和层次结构。
# OpenCV 2.4
contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
# OpenCV 3.4.1
im, contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
这些是一些重要的更改, 在将代码从OpenCV 2 .4迁移到OpenCV 3.x时可能会有用。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。