2012-02-10 69 views
1

我在Matlab的實現和部署爲.DLLMatlab來C#位圖圖像傳遞

我的C#代碼的算法調用從.dll和作爲該數據的結果的功能是建立一個情節生成。我想讓matlab代碼創建一個RGB圖像,並將該圖像的原始字節發送給C#。

任何人都可以請張貼一些代碼,這只是嗎?

我目前正在建設使用

$h = figure('visible', 'off'); 
plot(mydata); 
print(h, '-r80', '-dbmp', file1); 

我覺得這有點低效的情節(我錯了,也許?),因爲磁盤I/O操作。我寧願將其轉換爲原始RGB數據,並將生成的矩陣傳遞給C#。我不知道如何做到這一點。我已經嘗試使用ind2rgb這樣的虛像:ind2rgb(spiral(5),colormap),但是這似乎並沒有提供整數RGB值。他們似乎仍然在本地色彩地圖中編入索引。另外我不知道如何在圖形數據上使用ind2rgb函數(我不知道如何獲取圖形對象的圖像數據)。

所以,如果有人會提供一種方法來獲得與圖形相關聯的原始圖像字節(只有像素數據,沒有標題),並將其轉換爲RGB。我知道如何將它傳回給C#。

謝謝!

+0

什麼是從返回代表在你的函數圖像的字節,並保存到C#結構阻止你? – NominSim 2012-02-10 21:09:32

+0

我是Matlab新手,我不知道如何做到這一點。我查了一下,無法找到正確的地方找到這些信息。正如我上面指出的,我知道有一個函數ind2rgb將索引顏色轉換爲RGB,但我不知道如何訪問圖形對象的實際圖像數據。 – filipcampeanu 2012-02-10 21:47:20

回答

0

在MATLAB中打開deploytool()並創建一個.net程序集,然後鏈接到程序中的dll。當調用函數做這樣的事情:

AssemblyName.ClassName myClass = new AssemblyName.ClassName(); 
MWArray results = myClass.FunctionName(...functionArgs); 

您的結果數組將有你的MATLAB函數返回的數組。只要確保您的MATLAB函數返回像素的字節值。你可以通過調用獲得results MWArray的尺寸:

int[] dim = results.Dimensions; 
0

傳遞印刷情節的RGB數據在C#應用程序不會看起來很好。這是因爲您將矢量圖形柵格化爲特定大小,並調整大小看起來很難看。

相反,我建議使用矢量圖形。以抽象形式傳遞劇情(X,Y)以及其他屬性,如color。如果它更復雜,則編寫一個接口來傳遞這些信息。

通過編寫調用chart controls的本機函數使C#應用程序繪製圖。

0

的措辭可能不會一直在我原來的問題適當的,但我一直在尋找這樣的事情:

h = figure('visible', 'off'); 
plot(mydata); 
F = getframe(h); 
im = F.cdata;