使用发布库时,OpenCV imread(filename) 在调试模式下失败

2021-12-10 00:00:00 opencv image-processing libraries c++

我有一些 C++ 代码,除了 imread(file) 函数外,OpenCV 一切正常.它正确地找到了文件并加载了名称,但没有加载任何数据.

I have some C++ code and everything was working fine with OpenCV except the function imread(file). It was finding correctly the file and loading the name, but it wasn't loading any data.

Mat pattImage = imread(fileName, 0);

在网络上进行一些研究后,我意识到我处于调试模式,但使用的是 OpenCV 发布库,而不是调试库.

After some reaserch on the web I realized that I was in debug mode but with the release OpenCV libraries, instead of the debug ones.

debug library:    opencv_core231d.lib
release library:  opencv_core231.lib

虽然这是典型的愚蠢错误,我认为这不应该有任何关系,调试库应该允许 OpenCV 代码调试,而发布库允许更快地执行代码,但是我不明白为什么 imread 失败了.

Though it is the tipical stupid error I thought this shouldn't have anything to do, the debug libraries are supposed to allow OpenCV code debugging while the release libraries allow faster execution of the code, but I don't understand why imread was failing.

谁能解释一下OpenCV中调试和发布库之间的区别,以及为什么会出现这个错误?

Can anybody explain me the differences between debug and release libraries in OpenCV and why this error occurs?

这是一个 OpenCV 错误吗?

推荐答案

我永远不会厌倦告诉人们Windows 的 C++ OpenCV 接口有最奇怪的错误.

I'll never get tired of telling people that the C++ OpenCV interface for Windows has the wierdest bugs.

使用 C 接口编写一个小测试来检查它是否有效(cvLoadImage() 等).

Write a small test using the C interface to check if it works or not (cvLoadImage(), etc).

更新:既然您知道 C 接口工作正常,您可以转到邮件列表并在那里报告此错误,或者自己深入研究代码以找出失败的原因.

Update: now that you know that the C interface works properly, you can either go to the mailing list and report this bug there or dig into the code yourself to find why it fails.

相关文章