gpt4 book ai didi

c++ - Marshal::用 CvMat 复制

转载 作者:行者123 更新时间:2023-11-28 08:01:02 27 4
gpt4 key购买 nike

我需要使用 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 );

现在它编译正常但是在 marshal:copy 行给我错误

 An unhandled exception of type 'System.AccessViolationException' occurred in   
mscorlib.dll. Additional information: Attempted to read or write protected memory.

非常感谢任何帮助。

最佳答案

cvEncodeImage 的返回是一个单行矩阵,包含编码后的图像数据。您现在正在复制的是结构本身,例如宽度字段、高度字段等。我相信您需要从 buf1->data 复制。

关于c++ - Marshal::用 CvMat 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com