在WPF下,Image类不在System.Drawing(因为这个是在.netFramework里面的,不是.NetCore里面的);需要NuGet里面引用System.Drawing.Common;
/// <summary>
/// 将Bitmap转换为Halcon可以使用的HImage;
/// </summary>
/// <param name="bmp">原图像</param>
/// <returns>转换后的HObject对象</returns>private static HObject HImageConvertFromBitmap32(Bitmap bmp)
{
HObject ho_Image;
HOperatorSet.GenEmptyObj(out ho_Image);
unsafe
{
System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
unsafe
{
HOperatorSet.GenImageInterleaved(out ho_Image, bmpData.Scan0, "bgrx", bmp.Width, bmp.Height, -1, "byte", bmp.Width, bmp.Height, 0, 0, -1, 0);
}
return ho_Image;
}
}
调用方法
HObject ho_Image
HOperatorSet.GenEmptyObj(out ho_Image);
ho_Image.Dispose();
ho_Image = HImageConvertFromBitmap32(bmp);
ho_GrayImage.Dispose();
HOperatorSet.Rgb1ToGray(ho_Image, out ho_GrayImage);