从OpenCV 2到OpenCV 3.x的过渡

2021年5月15日18:17:30 发表评论 1,108 次浏览

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课程。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: