C# Matlab到C位图图像传递

C# Matlab到C位图图像传递,c#,image,matlab,rgb,figure,C#,Image,Matlab,Rgb,Figure,我在Matlab中实现了一个算法,并将其部署为.DLL 我的C代码从.DLL调用函数,因此生成用于构建绘图的数据。我想让matlab代码从这个绘图中创建一个RGB图像,并将该图像的原始字节发送给C 有人能帮我发一些代码吗 我目前正在使用 $h = figure('visible', 'off'); plot(mydata); print(h, '-r80', '-dbmp', file1); 我觉得这有点低效也许我错了?由于磁盘I/O操作。我宁愿将其转换为原始RGB数据,并将生成的矩阵传递给C

我在Matlab中实现了一个算法,并将其部署为.DLL

我的C代码从.DLL调用函数,因此生成用于构建绘图的数据。我想让matlab代码从这个绘图中创建一个RGB图像,并将该图像的原始字节发送给C

有人能帮我发一些代码吗

我目前正在使用

$h = figure('visible', 'off');
plot(mydata);
print(h, '-r80', '-dbmp', file1);
我觉得这有点低效也许我错了?由于磁盘I/O操作。我宁愿将其转换为原始RGB数据,并将生成的矩阵传递给C。我不知道如何做到这一点。我曾尝试在如下虚拟图像上使用ind2rgb:IND2RGBSPILLA5,colormap,但这似乎没有提供整数RGB值。它们似乎仍然在本地颜色映射中被索引。此外,我不知道如何在地物数据上使用ind2rgb函数,我不知道如何获取地物对象的图像数据

因此,如果有人愿意为我提供一种方法,只获取原始图像字节的像素数据,没有与图形相关联的标题,并将其转换为RGB。我知道怎么把这个传给C


谢谢

在MATLAB中打开deploytool并创建.net程序集,然后链接到程序中的dll。调用函数时,请执行以下操作:

AssemblyName.ClassName myClass = new AssemblyName.ClassName();
MWArray results = myClass.FunctionName(...functionArgs);
h = figure('visible', 'off');
plot(mydata);
F = getframe(h);
im = F.cdata;
结果数组将包含MATLAB函数返回的数组。只需确保MATLAB函数返回像素的字节值。您可以通过调用以下命令获取结果数组的维度:

int[] dim = results.Dimensions; 

传递打印绘图的RGB数据在C应用程序中看起来不太好。这是因为您将矢量图形光栅化为特定大小,并且调整其大小看起来很难看

相反,我建议使用矢量图形。以抽象形式X、Y和其他属性(如颜色)传递绘图。如果更复杂,则编写一个接口来传递该信息


通过编写调用的本机函数,使C应用程序绘制绘图。

在我最初的问题中,措辞可能不合适,但我正在寻找类似的内容:

AssemblyName.ClassName myClass = new AssemblyName.ClassName();
MWArray results = myClass.FunctionName(...functionArgs);
h = figure('visible', 'off');
plot(mydata);
F = getframe(h);
im = F.cdata;

什么能阻止你返回表示函数中图像的字节并保存到c结构中?我对Matlab是新手,我不知道怎么做。我已经查过了,无法找到合适的位置来找到这些信息。正如我在上面指出的,我知道有一个函数ind2rgb可以将索引颜色转换为RGB,但我不知道如何访问地物对象的实际图像数据。