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