OpenCV imwrite params读取访问冲突

时间:2015-03-26 19:21:48

标签: c++ qt opencv

一个非常简单的问题...为什么我的代码会出现读取访问冲突错误?

cv::Mat laserSpeckle = Mat::zeros(100,100,CV_8UC1);
imwrite( "C://testimage.jpg", laserSpeckle );

当我附加一个调试器并进一步查看它时,它会在grfmt.cpp中的这个片段中抛出异常。

if( params[i] == CV_IMWRITE_JPEG_QUALITY )
        {
            quality = params[i+1];
            quality = MIN(MAX(quality, 0), 100);
        }

它也出现.png和.tiff。我是一个OpenCV新手,如果这很简单,我很抱歉。我正在使用Qt的价值。

5 个答案:

答案 0 :(得分:2)

你自己构建OpenCV吗?如果是,请确保在配置构建文件时启用了选项WITH_JPEG

cmake ... -DWITH_JPEG=ON ...

答案 1 :(得分:0)

它应该与bmp格式一起使用:

cv::Mat laserSpeckle = cv::Mat::zeros(100,100,CV_8UC1);
cv::imwrite( "C://testimage.bmp", laserSpeckle );

您的代码也适用于我的计算机。但是,似乎在某些系统上它只适用于bmp图像。我看到了herehere报告的类似问题。

答案 2 :(得分:0)

如果要使用Alpha通道保存图像,则应使用png格式。它被描述为here

答案 3 :(得分:0)

如果您使用发布 <构建代码,问题出在调试器 版本 (x64) strong>版本 (x64)它适用于我。

答案 4 :(得分:0)

在我的情况下,c ++代码生成设置错误 应该是多线程DEBUG dll MD