我需要使用c ++ / cli将图像发送到字节数组中。该图像最初采用Iplimage格式。
int img_sz1 = img1->width * img1->height * img1->nChannels;
array <Byte>^ hh1 = gcnew array<Byte> (img_sz1);
Marshal::Copy( (IntPtr)img->imageData, hh1, 0, img_sz1 );
它工作正常。
我添加了编码步骤,将其发送为jpeg
CvMat* buf1 = cvEncodeImage(".jpeg", img1, jpeg_params);
img_sz1=buf1->width*buf1->height
Marshal::Copy( (IntPtr)buf1, hh1, 0, img_sz1 );
现在它编译得很好但是在编组时给出了错误:复制行
An unhandled exception of type 'System.AccessViolationException' occurred in
mscorlib.dll. Additional information: Attempted to read or write protected memory.
非常感谢任何帮助。
答案 0 :(得分:1)
cvEncodeImage
的返回是单行矩阵,包含编码图像数据。您现在要复制的是结构本身,例如宽度字段,高度字段等。我相信您需要从buf1->data
复制。