Вот мой код std :: str - буфер, содержащий данные изображения jpeg. проблема в том, что img не имеет значения при декодировании и не выдает исключений.
unsigned char* p = (unsigned char*)(&str[0]);// convert std::string str to unsigned char*
cv::Mat img;
try
{
img = cv::imdecode(cv::Mat(1, str.length(), CV_8UC1, p), IMREAD_UNCHANGED);
}
catch (cv::Exception& e)
{
const char* err_msg = e.what();
TRACE(L"exception caught: %S", err_msg);
}
//save jpeg file image save fine from buffer p
std::fstream file;
file.open("image.jpg", std::ios::out | std::ios::binary);
file.write((char *)p, str.length());
file.close();