0
我有我在Matlab中使用的C#dll返回存儲在BMP文件中的原始8位灰度比特。 (是的,我知道Matlab可以讀取BMP,但是這是一個測試,對於數據將來自視頻圖像採集卡的真實系統)。返回一個BMP文件中的原始圖像位
現在,下面的代碼返回1078位的頭信息,需要剝離,它也翻轉圖像的軸(它出現在鏡像中)。解決這個問題的最好方法是什麼(最少線路,性能不是問題)。
image = Image.FromFile(this.imagePath);
ImageConverter converter = new ImageConverter();
data = (byte[])converter.ConvertTo(image, typeof(byte[]));
Frame f = new Frame(data);
public class Frame
{
public byte[,] frameData = new byte[1024, 1024];
public Frame(byte[] data)
{
Buffer.BlockCopy(data, 0, frameData, 0, 1024 * 1024 * sizeof(byte));
}
}
待辦事項你想在'C#'或'Matlab'中得到答案嗎?至少第二部分(翻轉圖像),Matlab可以在一行中完成。 – Hoki 2014-12-04 17:18:27
我對這裏使用'ImageConverter'表示懷疑。您可以使用其他機制(如'LockBits()'方法)直接訪問實際位圖數據,而不使用標頭。如果你想傳遞一個'byte []'給Matlab並且需要幫助,你還需要明確你想要創建的格式。一個'byte []'可能,但還有什麼?任何特定的像素格式? Matlab是否需要遵循特定的步幅規則?之類的東西。 – 2014-12-04 18:22:00
我正在尋找在C#中的工作,而不是matlab。我只是想要一個原始字節數組,以便Matlab可以將其讀取爲uint8數組。 LockBits看起來像它讓我圍繞標題問題。謝謝 – 2014-12-08 14:53:33