我在Matlab中使用C#dll来返回存储在BMP文件中的原始8位灰度位。 (是的,我知道Matlab可以读取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));
}
}
答案 0 :(得分:1)
你的意思是这样的:
BitArray bits = new BitArray(returnBytes);
BitArray flippedBits = new BitArray(bits);
for (int i = 0; i < bits.Length; i += width) {
for (int j = 0, k = width - 1; j < width; ++j, --k) {
flippedBits[i + j] = bits[i + k];
}
}
如果您需要倒置镜像,请使用以下代码:
BitArray bits = new BitArray(returnBytes);
BitArray flippedBits = new BitArray(bits);
for (int i = 0, j = bits.Length - width; i < bits.Length; i += width, j -= width) {
for (int k = 0; k < width; ++k) {
flippedBits[i + k] = bits[j + k];
}
}