OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)

1. 由于宏名称的变更照成的“未声明的标识符”系列问题

有时候,遇到此类问题加入一句 #include <cv.h> 便可以让 OpenCV3 或者 OpenCV4 也能认识一些 CV_ 前缀的宏,将问题解决掉,因为有不少 OpenCV1 的宏依然在 OpenCV3 或者 OpenCV4cv.h 头文件中有定义。

问题:在 OpenCV3/ OpenCV4 的环境下运行 OpenCV2 中写的程序,报 error C2065: <CV_WINDOW AUT0SIZE,:未声明的标识符 系列错误。

分析: OpenCV3/OpenCV4 取消了 OpenCV1 中残留的 CV_ 式的宏前缀命名规范,对这些 CV_ 前缀的宏使用了新的命名规范。这里有几种情况要分类讨论。

1.1 直接去掉“CV_” 前缀

在这种情况下,比较典型的有如下一些函数。

  1. namedWindow 函数中,例如将 CV_WINDOW_AUTOSIZE 改为 WINDOW_AUTOSIZE

  2. threshold 函数中,例如将 CV_THRESH_BINARY 改为 THRESH_BINARY

  3. line 函数等一系列绘图函数中, CV_FILLED 改为 FILLED

  4. remap 函数中, CV_INTER_LINEAR 改为 INTER_LINEAR

  5. 在鼠标操作函数 SetMouseCallback 中,将

    CV_EVENT_LBUTTONUP 改为 EVENT_LBUTTONUP
    CV_EVENT_LBUTTONDOWN 改为 EVENT_LBUTTONDOWN
    CV_EVENT_FLAG_LBUTTON 改为 EVENT_FLAG_ LBUTTON
    CV_EVENT_MOUSEMOVE 改为 EVENT_MOUSEMOVE

  6. HoughCircles 函数中, 将 CV_HOUGH_GRADIENT 改成 HOUGH_GRADIENT

  7. inpaint 函数中,将 CV_INPAINT_TELEA 改为 INPAINT_TELEA , 将 CV_INPAINT_NS 改为 INPAINT_NS

  8. matchTemplate 函数中,将 CV_TM_SQDIFF 改为 TM_SQDIFFCV_TM_SQDIFF_NORMED 改为 TM_SQDIFF_NORMED

  9. imwrite 函数相关使用中,将 CV_IMWRITE_PNG_COMPRESSION 改成 IMWRITE_PNG_COMPRESSION

  10. 设置摄像头尺寸的时候,将 CV_CAP_PROP_FRAME_WIDTH 改为CAP_PROP_FRAME_WIDTHCV_CAP_PR0P_FRAME_HEIGHT 改为 CAP_PR0P_FRAME_HEIGHT

1.2 使用新的前缀替换

在这种情况下,比较典型的有如下一些函数。

  1. line 函数等一系列绘图函数中, CV_AA 改为 LINE_AA
  2. cvtColor 函数中颜色空间转换系的宏,全替换为 COLOR_ 前缀,如 CV BGR2HSV 改为 COLOR_BGR2HSV
  3. normalize 函数中,将 CV_MINMAX 改为 NORM MINMAX
  4. morphologyEx 函数中的宏,全部替换为 MORPH_ 前缀,如 CV_MOP_OPEN 改为 MORPH_OPEN
  5. threshold 函数中的宏,全部替换为 THRESH_ 前缀,如将 CV_THRESH_BINARYTHRESH_BINARY

1.3 使用新命名空间的宏

在这种情况下, 比较典型的有如下一些函数。

  1. TermCriteria 函数中, CV_TERMCRIT_EPS 改为 TermCriteria::EPSCV TERMCRIT ITER 改为 TermCriteria::MAX_ITER

  2. CascadeClassifier::detectMultiScale 函数中, CV_HAAR_SCALE_IMAGE 改为 CASCADE_SCALE_IMAGE

2. 其它细节

  • features2d.hpp 头文件路径的更改。将 #include<opencv2/nonfree/features2d.hpp> 改为 #include <opencv2/features2d.hpp>

  • core.hpp 头文件路径更改。将 #include <opencv2/core/core.hpp> 改为 #include <opencv2/core.hpp>

  • format 进行格式化输出时, 将 format(r,"python") 改成 format(r, Formatter::FMT_PYTHON)

  • 定义尺寸时,将 cvSize(-1,-1) 改为 Size(-1,-1)

  • 在表示颜色时,将 CV_RGB 改为 Scalar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wohu007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值