私はmatImageを書こうとしています
cv::Mat matImage;
matImage.create(480, 640, CV_8U);
MFC アプリケーションで Serialize(CArchive& ar) を介して bmp ファイル (「test.bmp」など) に変換します。
このコードは機能しません
void CApplDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
CFile* file = ar.GetFile();
CString strFileName = file->GetFileName();
CStringA strFileNameA(strFileName);
cv::imwrite(strFileNameA.GetBuffer(), matImage);
}
}
これを正しく行う方法は?
アップデート
このコードは十分ではありませんが、機能します
void CApplDoc::Serialize(CArchive& ar)
{
CFile* file = ar.GetFile();
CString strFileName = file->GetFileName();
CStringA strFileNameA(strFileName);
if (ar.IsStoring())
{
std::vector<uchar> buff;
cv::imencode(".bmp", matImage, buff);
ar.Write(&buff[0], buff.size());
buff.empty();
}
else
{
UINT size = (UINT)file->GetLength();
std::vector<uchar> buff;
buff.resize(size);
ar.Read(&buff[0], size);
matImage = cv::imdecode(buff, CV_LOAD_IMAGE_GRAYSCALE);
buff.empty();
}
}