相关疑难解决方法(0)

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

我有一些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的错误吗?

c++ opencv image-processing libraries

22
推荐指数
2
解决办法
3万
查看次数

在Windows 7上,OpenCV imwrite 2.2导致异常,并显示消息"OpenCV错误:未指定错误(找不到指定扩展名的编写器)"

我正在将一个OpenCV 2.2应用程序从Unix(可以正常)移植到Windows 7 64位上,当调用cv :: imwrite时我收到以下异常

"未知函数中的OpenCV错误:未指定错误(找不到指定扩展名的编写器),文件highgui\src\loadsave.cpp"

原始的unix应用程序在我的Mac和Linux机器上运行良好.

有谁知道我可能缺少什么库或编译器配置,使这在Windows上工作?

更新:

为了让OpenCV运行,我做了以下事情:

  • 从Windows的OpenCV站点下载v2.2的二进制文件.我正在使用2.2,因为原始应用程序使用它,我不想在此阶段使我的构建复杂化.
  • 我试图写入.png文件.我查看了OpenCV代码,并注意到编码器的外部库的必要性,如Pngs或jpegs,所以我尝试写入.ppm,.bmp似乎不需要deps,但我得到了相同的错误.
  • 我的一个例子是cv :: imwrite("out.png",cv_scaled); 其中cv_scaled的类型为cv :: Mat,格式为CV_32FC1
  • 请记住,相同的代码在unix中工作正常

事实上.bmp或.ppm不起作用这会引发更多问题:

  • 为什么这些非常简单的格式不起作用?
  • 有没有办法以编程方式查看已安装的编码器列表?

再次感谢您帮助我调试此问题.

opencv visual-c++ windows-7

10
推荐指数
1
解决办法
2万
查看次数