从OpenCV 2到OpenCV 3.x的过渡

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()

【从OpenCV 2到OpenCV 3.x的过渡】表面:创建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课程。

    推荐阅读