OpenCV2代码升级到OpenCV3报错的解决方法

  如果某个从GitHub或其他博客网站下载的代码上传时间在2014.8.21之前,那么它一定是用OpenCV2.x版本写的。当使用配置了OpenCV3的VS编译的时候代码会有许多错误,解决报错的方法,总结后大概有以下几种。

1.“未声明的标识符”系列问题

  新标识符和老标识符有共同之处,如果标识符用“CV_”开头,那么可以尝试加入一句“include <cv.h>”。许多标识符在OpenCV3的库中仍有定义,调用cv.h头文件后就可以使用这些标识符。

  另一方面的共同之处是标识符单词本身的意思和其功能有联系,所以大多数标识符修改之后只是改变了前缀。这时候可以采取多种措施:去掉CV_前缀、更换前缀、在新的命名空间中使用宏。上网搜索就可以找到有相同功能(参数可能有变化)的函数。

2.因为命名空间出现的问题

  程序中当然不可能仅仅包含视觉算法有关的代码,如果不在头文件中声明std命名空间,在vector等容器的使用中容易出现问题,而这是老版本程序中不存在的问题。

  加一句using namespace std;就可以解决问题了。

3.某个函数unsafe的解决方法

  'freopen': This function or variable may be unsafe. Consider using freopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

  有时候会提示某个函数不安全,要求加上_s后缀,然而这么做并不能解决问题。该问题不仅限于老程序升级为新程序,平时写代码也会遇到。这时候在文件开头加一句:

#pragma warning(disable:4996)

  就可以了。

原文地址:https://www.cnblogs.com/Shymuel/p/9570220.html