我正在尝试将我创建的Mat格式写入jpeg文件,但我得到的是一个未处理的异常。从文档中可以看出
使用此功能可以保存仅8位(或PNG,JPEG 2000和TIFF的16位无符号(CV_16U))单通道或3通道(带'BGR'通道顺序)图像。
所以我使用下面的代码创建了一个Mat:
Mat watermark(5,5,CV_16U);
imwrite("C:\\watermark.jpg",watermark);
但是,我无法将图像写入jpeg。它适用于BMP格式,但不是JPG或任何其他格式。我被建议将其转换为CV_16U或8U,但它不能正常工作,我对C:\目录有写权限。
我错过了一步吗?或者我还有其他方法可以使用OpenCV将图像保存到JPG中吗?
答案 0 :(得分:3)
如果您使用的是最新的opencv(v3.0)或更高版本以及Windows x64位版本,某些opencv的功能在调试模式下无法正常运行...您必须在发布模式下运行代码然后一切将完美运行。
我在opencv3.1和x64位找到的问题 - 调试模式
要修复这些问题,请在发布模式下运行应用程序。
仍在寻找一种在调试模式下解决这些问题的好方法。
答案 1 :(得分:-2)
此代码工作正常并make / rewrite“watermark.jpg”:
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace cv;
int main() {
Mat watermark(5,5,CV_16U);
imwrite("C:\\watermark.jpg",watermark);
return 0;
}
我有Win7,Wascana Eclipse(MinGW GCC编译器),Opencv 2.4.5