private void Dispose(ref HObject image)
{
if (image != null && image.Key != IntPtr.Zero)
{
image.Dispose();
}
}
private HObject BytetoHobject(byte[] rawValues, int width, int height)
{
HObject red = null, green = null, blue = null;
Bitmap bmp = null;
try
{
bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb);
BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format24bppRgb); 获取图像参数
IntPtr iptr =bmpData.Scan0; // 获取bmpData的内存起始位置
System.Runtime.InteropServices.Marshal.Copy(rawValues, 0, iptr, width * height * 3);
HOperatorSet.GenImageInterleaved(out HObject image, (HTuple)iptr, "rgb", width, height, 0, "byte", 0, 0, 0, 0, -1, 0);
bmp.UnlockBits(bmpData);
bmp.Dispose();
HOperatorSet.Decompose3(image,out red,out green,out blue);
image.Dispose();
HOperatorSet.Compose3(blue,green,red,out image);
//HOperatorSet.WriteImage(image,"png",0,"bmp");
return image;
}
catch (Exception e)
{
return null;
}
finally
{
Dispose(ref red);
Dispose(ref green);
Dispose(ref blue);
if (bmp != null)
{
bmp.Dispose();
}
}
}
【1】图像转换方法C#Byte数组转Halcon的Hobject
于 2022-04-15 12:06:35 首次发布