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

Jav*_*ock 22 c++ opencv image-processing libraries

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

Mat pattImage = imread(fileName, 0);
Run Code Online (Sandbox Code Playgroud)

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

debug library:    opencv_core231d.lib
release library:  opencv_core231.lib
Run Code Online (Sandbox Code Playgroud)

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

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

它是OpenCV的错误吗?

kar*_*lip 26

我永远不会厌倦告诉人们Windows的C++ OpenCV界面有最大的错误.

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

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

  • 没有.C++界面很好.问题是一些OpenCV安装程序提供了使用特定标志编译的二进制文件,您需要在项目中设置这些二进制文件以便能够使用OpenCV构建应用程序.例如,在Visual Studio上,您可能想要转到**项目属性**,选择**C/C++**>**代码生成**,并确保**运行时库**字段已设置**"多线程调试(/ MTd)"**. (2认同)

Bor*_*neq 8

在发布模式下,您必须在调试模式下使用发布库 - 调试库.这不是错误.