OpenCV无法使用imwrite写入图像

OpenCV unable to write Images using imwrite

本文关键字:图像 imwrite OpenCV      更新时间:2023-10-16

我试图写一个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位-调试模式下发现的问题

  1. imwrite(filename, image) get exception (read access violation).
  2. 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