从 OpenCV 2 过渡到 OpenCV 3.x
OpenCV 是最流行和最常用的计算机视觉库之一。它包含执行图像和视频处理的工具。
当 OpenCV 3..4.1 是 OpenCV 2.4 的改进版本时,它引入了新的算法和特性。虽然一些现有的模块被重写并移动到子模块。在本文中,我将重点介绍 OpenCV 2.4 现有模块中所做的更改以及如何在 OpenCV 3.4.1 中实现它们。
特征检测
一些特征检测算法(FREAK、BRIEF、SIFT 和 SURF)已移至 o pencv_contrib 存储库和xfeatures2d模块。 SIFT 和 SURF 算法由其创建者获得专利,并且是非免费的。尽管它们可以用于教育和研究目的。
SIFT:创建 SIFT 特征检测器对象。
# OpenCV 2.4
sift = cv2.SIFT()
# OpenCV 3.4.1
sift = cv2.xfeatures2d.SIFT_create()
SURF :创建 SURF 特征检测器对象
# OpenCV 2.4
surf = cv2.SURF()
# OpenCV 3.4.1
surf = cv2.xfeatures2d.SURF_create()
FAST :创建 FAST 检测器对象
# OpenCV 2.4
fast = cv2.FastFeatureDetector()
# OpenCV 3.4.1
fast = cv2.FastFeatureDetector_create()
ORB :创建 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)
该方法的名称已从 2.4 版本中的CV_HOUGH_GRADIENT
更改为 3.4 版本中的HOUGH_GRADIENT
。
轮廓
最初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 时可能有用的一些重要更改。
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。