cv :: imwrite找不到指定扩展名的编写器

时间:2012-03-26 08:40:24

标签: opencv

以下命令会导致异常。

cv::imwrite("test.jpg", diffImg);

我还尝试了很多变种,包括绝对路径和PNG导出。这是错误:

  

0x75abd36f的异常,代码:0xe06d7363:C ++异常,flags = 0x1   (执行无法继续)在opencv_core231!cv :: error

     

C:\从属\ WinInstallerMegaPack \ SRC \的OpenCV \模块\ highgui \ SRC \ loadsave.cpp:276:   错误:( - 2)找不到指定扩展名的编写器

根据this related thread我当前的OpenCV安装不支持我尝试过的图像格式。但我只是像他们网站建议的那样下载了precompiled Windows framework

如何让JPG导出工作?

8 个答案:

答案 0 :(得分:33)

我也遇到过这个问题,我发现当我使用没有任何扩展名的图像时会出现这个问题。与undefined类似,但我只将其重命名为abc.jpg

答案 1 :(得分:9)

听起来好像您使用的是与您正在编译的环境不同的执行环境。你能试试以下吗?下载依赖性walker并转到可执行文件目录,并将.exe文件拖放到依赖性walker(http://www.dependencywalker.com/)上。它将显示它正在使用的运行时库。 现在,确保您使用适当的环境调用该程序。如果可以,使用命令行界面来调用程序,它会让您感觉更安全,知道调用代码的位置,因此您可以确保调用复制的.dll。

亲切的问候, 丹尼尔

答案 2 :(得分:3)

只需提及您希望保存图片的格式,例如image.jpg,image.jpeg

cv2.imwrite('image.jpg',image)

答案 3 :(得分:0)

您需要重新编译OpenCV并添加对“jpeg”格式的支持。 获取最新的opencv代码并运行cmake:

svn co http://code.opencv.org/svn/opencv/trunk/opencv myopencvdir.svn/
cd myopencvdir.svn/
mkdir release
cd release/
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

检查是否支持libjpeg,libpng,libtiff。如果不是,则需要安装它们并重新运行cmake。

显示媒体I / O支持的cmake输出示例:

--   Media I/O: 
--     ZLib:                       TRUE
--     JPEG:                       TRUE
--     PNG:                        TRUE
--     TIFF:                       TRUE
--     JPEG 2000:                  TRUE
--     OpenEXR:                    YES

答案 4 :(得分:0)

在尝试其他任何事情之前,请确保您根据this answer设置OpenCV和VS项目,并小心不要将OpenCV版本库与调试库混合使用。

您可能会尝试以下几种方法:

  • 如果您使用的是Windows 7 64位,则可能需要遵循thisthis说明。

  • 我注意到了类似的question on javacv wiki,这是另一种可能的解决方案:

  
      
  1. 转到this page,按照说明将opencv 2.3.1设置为第2步。(使用32位模式)

  2.   
  3. 下载最新版本的TBB for Windows from here

  4.   
  5. 解压缩TBB zip文件,将/ bin / ia32 / vc10中的所有.dll文件和/ bin / ia32 / vc10 / irml中的所有.dll文件复制到C:\ OpenCV 2.3.1 \ build \ x86 \ vc10 \ bin

  6.   

告诉我们你是怎么做的。

答案 5 :(得分:0)

我遇到了相同的运行时错误“opencv error unspecified error(找不到指定扩展名的编写器)”。我使用与Pieter相同的解决方案,即在项目设置中 - >链接器 - >输入 - > Aditional Dependencies,我指定使用opencv libs的调试版本进行MSVS调试配置,并指定使用opencv libs的发行版本进行MSVS发布配置。然后运行时错误消失了。

答案 6 :(得分:0)

是的,它对我有用。
对于调试,只需删除*.lib left *d.lib (Property Pages/Linker/Input/Additional Dependencies),只需复制这些*d.lib

答案 7 :(得分:0)

except for some solutions above, you should check the name of your pictures. for me , the solution of my problem is the wrong input in the Command parameters in Debug. i intended to output a picture named 1.png and this is the second parameter in main(), and the third parameter of main() is a hexadecimal number like 0x3f and I mixed this two parameters which means I intend to output a picture with name 0x3f. That is why it is said "could not find a writer". the screenshot of the wrong part of my problem sorry about the Chinese, but is the Property ->Configure Property ->Debug ->Command Parameters. :)