我遇到了cv :: imdecode()的一个功能 - 当我尝试使用非标准大小加载图像时,我总是使用NULL缓冲区和行= 0来获取图像。
例如,这是一个大小为236x402的.jpg:
我的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图像,效果很好。
想法?
答案 0 :(得分:0)
中的错误
pf = _wfopen(strFileName, L"r");
必须
pf = _wfopen(strFileName, L"rb");
感谢您的帮助