首先生成颜色查找表数组 colormap 数组类型是byte 大小256*3
Mat lut = new Mat( 1,256*3, 0, 3);
lut.SetTo(colormap);
byte[] Imagebigbyte = new byte[ImageWidth*DataNum_row];
Array.Copy(buffer,0,Imagebigbyte,0, ImageWidth*DataNum_row);
//buffer里面保存的时图像的像素值
Mat img = new Mat(ImageWidth, DataNum_row, 0, 1);
Mat Imagebig = new Mat(ImageWidth, DataNum_row * 3 , 0, 3);
Marshal.Copy(Imagebigbyte, 0, img.DataPointer, img.Height * img.Width);
CvInvoke.LUT(Imagebig, lut, Imagebig);
pictureBox2.Image = Imagebig.Bitmap;
在CvInvoke.LUT(Imagebig, lut, Imagebig)报错:
求大神指教
这个要看你的字节数组所构成的图片是否是合法的格式,长度宽度颜色位数调色板都有要求的,错了一点就报错
SetTo用来设置矩阵的值,你的数据总量是256*3,矩阵列数是256*3,你又写了3通道,相当于256*3*3个数据,所以应该是数据出现了问题。
你把定义Mat lut = new Mat( 1,256*3, 0, 3);改成Mat lut = new Mat( 1,256*3, 0, 1);试一下