在学习Mastering OpenCV这本书的时候,第三章MarkerlessAR,拿作者的源码在Win10,VS2013,opencv249环境下出现了一些问题,花了挺长时间,记录下来。
1. 这个项目需要OpenCV支持OpenGL,按照网上的说法,预编译的OpenCV是不支持OpenGL的,所以最好重新去官网下载源码自己编译,编译的时候只需要将WITH-OPENGL选项打上勾就行,那个选项大致就是这个名字。
2. 还有两个地方,一个是std::min,一个是std::max,有冲突,只需要用括号括起来就行,像下边这样。
pipeline.m_patternDetector.homographyReprojectionThreshold=(std::min)(10.0f, pipeline.m_patternDetector.homographyReprojectionThreshold);
3. 还有一个PatternDetector::findPattern(const cv::Mat& image, PatternTrackingInfo& info)函数中的局部变量bool homographyFound = false;未定义的错误,只需要把它放到函数中的起始位置进行定义就行。
4. 然后是下面这种错误,一堆,这时只需要在main文件顶部添加“#pragma comment(lib,”opengl32.lib”)
”即可
error LNK2019: 无法解析的外部符号 __imp__glBegin@4,该符号在函数 “void __cdecl display(void)” (?display@@YAXXZ) 中被引
梵蒂冈
最坑的是我把这些错误都搞定了,还是不行,最后发现是重新编译OpenCV并配置好环境变量后,可能是因为没有注销,然后把电脑注销了一下好了。。。wtf!