我所遇到的诡异问题就是我已经将所有环境配的分毫不差。
但是会发生读不了图片的错误,如果没有捕捉这个exception,还会报类似于下述的错误
0x00007FFBD5EFA839 处(位于 *****.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x000000F19C16C680 处。
这种时候最好确认自己是否读到了图片数据,做一个异常捕捉。
比如:
Mat imgSrc = imread("F:\\1\\1.jpg");
if (imgSrc.empty()) {
cout << "could not load or find image..." << endl;
return -1;
}
当然这里是要解决我遇到的问题。我最终发现问题发生还是因为编码问题。详细地说,从Windows下复制过去的路径不光是格式的问题,还有编码的问题,比如Windows系统中的字体直接复制过来会是非Unicode型的,导致细微的差别,主要是体现在反斜杠和冒号上。
比如G:\WeGameApps\girl.jpg中的":“和”\",这种情况下必须通过观察解决方案生成时是否报某个字符在此环境下不能正常编译(通过调整输出窗口,将输出来源调为生成或是生成顺序可以看到类似的信息打印)。我遇到的情况是‘\u3A’在此情况下不能正常编译,就是错误的编码。这个时候只要重新把路径全部重新手敲一遍就行了。
值得说明的是,这个错误情况我已经无法再复现了。可能是某个系统性的BUG。**😗*