以下命令会导致异常。
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导出工作?
答案 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版本库与调试库混合使用。
您可能会尝试以下几种方法:
我注意到了类似的question on javacv wiki,这是另一种可能的解决方案:
告诉我们你是怎么做的。
答案 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. :)