我试图写一个Mat格式,我已经创建了一个jpeg文件,但所有我得到的是一个未处理的异常。文档中说
只有8位(或16位无符号(CV_16U)在PNG, JPEG 2000和TIFF的情况下)单通道或3通道(与' BGR '通道顺序)图像可以使用此功能保存。
所以我用下面的代码创建了一个垫子:
Mat watermark(5,5,CV_16U);
imwrite("C:\watermark.jpg",watermark);
但是,我无法将图像写入jpeg。它可以很好地处理BMP格式,但不能处理JPG或任何其他格式。我被建议将其转换为CV_16U或8U,但它不起作用,我确实有写权限到C:目录。
我错过了一个步骤吗?或者我应该使用OpenCV将图像保存为JPG格式吗?
如果您使用的是最新的opencv (v3.0)或更高版本和windows x64位版本的opencv的一些功能在调试模式下不能正常工作…你必须在发布模式下运行你的代码,然后一切都会完美运行。
我在opencv3.1和x64位-调试模式下发现的问题
- imwrite(filename, image) get exception (read access violation).
- haarCascade.detectMultiScale(…)检测大量的对象。
要解决这些问题,运行应用程序在发布模式
在调试模式下仍在寻找解决这些问题的好方法
这段代码可以正常工作并生成/重写"watermark.jpg":
#include <opencv2corecore.hpp>
#include <opencv2highguihighgui.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