Opencv:对于非标准尺寸的图像,imdecode()失败

时间:2016-11-22 10:11:39

标签: c++ windows opencv jpeg

我遇到了cv :: imdecode()的一个功能 - 当我尝试使用非标准大小加载图像时,我总是使用NULL缓冲区和行= 0来获取图像。

例如,这是一个大小为236x402的.jpg:

enter image description here

我的C ++代码:

FILE* pf = NULL;
pf = _wfopen(strFileName, L"r");
if (!pf)
{
    return false;
}
fread(pFileBuf, 1, nFileSize, pf);
fclose(pf);
cv::Mat matRaw = cv::Mat( 1, nFileSize, CV_8UC1, pFileBuf);
cv::Mat matImage = cv::imdecode(matRaw, CV_LOAD_IMAGE_COLOR);
delete [] pFileBuf;
SIZE size;
size.cx = matImage.cols;
size.cy = matImage.rows;

运行matImage.rows = 0和matImage.data = NULL。

但对于1280x720的jpeg图像,效果很好。

想法?

1 个答案:

答案 0 :(得分:0)

中的错误
pf = _wfopen(strFileName, L"r");

必须

pf = _wfopen(strFileName, L"rb");

感谢您的帮助