之前我在VS2015上使用OpenCV的时候,常常会遇到以下两个问题:
- 使用std::cout
输出cv::Mat
等OpenCV独有的类型时会报错;
- 在std::vector<cv::Point>
等容器中包含着OpenCV独有的类型时,函数返回时会报错(vector析构函数出错)。
最近解决了这些问题,与大家分享下。
可以发现,这些问题都是出在C++与OpenCV配合时,主要原因还是环境配置出错了,OpenCV与VS的版本没有匹配好。我之前电脑上装着VS2010+OpenCV2.4.6 VS2015+OpeCV2.4.13和OpenCV3.0,在一般使用的时候都能正常使用,但其实会有冲突的情况。说下我的解决方法(我把下面两步都修改了,建议先看第一步,如果第一步没问题,还会报错,再试试第二步):
- 在设置环境变量的时候,不要多加其他关于OpenCV的环境变量,只设置你需要的哪个。
- 配环境的时候选择正确的VS版本。我看网上很多教程是拿VS2013编译的版本用来配置VS2015,最好还是直接用VS2015编译的。
之前OpenCV2是没有VS2015预编译版本,不过在最新的OpenCV 2.4.13.2上,已经有了V14的编译版本。