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

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

  1. Opencv、OpenCV2.x、Opencv3.x个版本的进化,与VS各个版本的匹配问题

    首相声明,本文章借鉴了其他文章,会给与文章链接. 1.opencv 与opencv2.x版本 Opencv1.0版本于2006年面世,主要基于C语言.2009年发布opencv2,主要基于C++.此时 ...

  2. 分水岭算法java,OpenCV 学习笔记 04 深度估计与分割——GrabCut算法与分水岭算法...

    1 使用普通摄像头进行深度估计 1.1 深度估计原理 这里会用到几何学中的极几何(Epipolar Geometry),它属于立体视觉(stereo vision)几何学,立体视觉是计算机视觉的一个分 ...

  3. ubuntu18.04下 c++安装opencv-3.4.6,c++安装opencv-3.4.9,clion配置opencv-3.4.6与 python安装 opencv-3.4.6

    c++安装opencv-3.4.6   卸载 1. $ sudo make uninstall 2. $ cd .. 3. $ sudo rm -r build 4. $ sudo rm -r /us ...

  4. OpenCV 笔记(02)— 图像显示、保存、腐蚀、模糊、canny 边缘检测(imread、imshow、namedWindow、imwrite)

    OpenCV 提供两种用户界面选项: 基于原生用户界面的基本界面,适用于 Mac OS X 的 cocoa 或 carbon,以及适用于 Linux 或 Windows 用户界面的 GTK ,这些界面 ...

  5. 颜色空间转换 cvtColor()[OpenCV 笔记13]

    void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0) src: 输入图像 dst: 输出图像 code: 颜色空间 ...

  6. OpenCV 笔记 -- 边缘检测(Sobel、Laplace、Canny)

    OpenCV 笔记 – 边缘检测(Sobel.Laplace.Canny) 参考文档 一.Sobel 算子 1.简介 Sobel 算子是一个离散的一阶差分算子,用来计算图像亮度函数的一阶梯度近似值.在 ...

  7. ubuntu16.04源码安装opencv3.4.0

    ubuntu16.04源码安装opencv3.4.0 opencv下载地址:https://opencv.org/releases/page/3/ 1.下载安装包 2.安装依赖 sudo apt-ge ...

  8. openCVPracticalExercise学习笔记04

    原创:openCVPracticalExercise学习笔记04 30使用OpenCV实现图像孔洞填充 31使用OpenCV将一个三角形仿射变换到另一个三角形 1 2 3 4 5 6 7 8 9 10 ...

  9. opencv笔记(二)之opencv打开笔记本摄像头

    一.前言 楼主最近在使用opencv采集摄像头信息,一开始都不知道怎么去打开笔记本的摄像头的,于是有空做一个记录分享 至于win下怎么配置opencv可以参考楼主文章Opencv笔记(一)之vs201 ...

最新文章

  1. 合肥工业大学—SQL Server数据库实验二:数据库架构的创建与使用
  2. MySQL中查询的看到的日期和Java程序查询出来的日期差了几个小时
  3. python 运算符 (算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级)(与或非)(异或)
  4. 《数据库SQL实战》查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工
  5. chart.js 饼图显示百分比_实战PyQt5: 135-数据可视化之QChart绘制饼图
  6. Spring MVC:表单处理卷。 3 –复选框处理
  7. java异步处理rest服务_异步处理rest服务
  8. React 组件间通讯
  9. Python 学习笔记 - Redis
  10. RTSP RTMP HLS HTTP全功能流媒体播放器SkeyeExPlayer开发计划
  11. Express的使用
  12. 数据结构基础之基础(数据、计算机结构)
  13. 实时可调度性分析算法— 利用率上界 和 加速因子的作用
  14. python自动化通知webhook接口代码参考
  15. C++栈和堆原理介绍
  16. 单词长度和GPS数据处理——程序设计入门C语言
  17. Azure China (11) 使用Azure China Storage Public Blob
  18. 真正的IT女是什么样子的?
  19. 一般信道容量的计算matlab,DMC信道容量迭代计算的matlab实现
  20. Python 最详细的 socket 相关内容解读

热门文章

  1. 一图了解git常用开源许可证书
  2. Python 标准库之 json
  3. Redis 笔记(04)— list类型(作为消息队列使用、在列表头部添加元素、尾部删除元素、查看列表长度、遍历指定列表区间元素、获取指定区间列表元素、阻塞式获取列表元素)
  4. 【读书笔记】知易行难,多实践
  5. java数据类型相互转换工具类
  6. 高斯回归过程应用例子
  7. MindSpore应用目标
  8. 自动驾驶仿真分析,提高研发效率
  9. ❤️Spark的关键技术回顾,持续更新!【推荐收藏加关注】❤️
  10. Thrift的接口定义语言IDL