一直用opencv 做图像处理,最近接触到了halcon,发现使用halcon 实在太方便了。halcon 的代码可直接导出为C# 代码。由于我只是用halcon 实现图像算法功能,图像的显示还是用bitmap 格式,所以不可避免的要实现 bimtap 和hobject 互相转化的功能。
百度搜集的转换资料并不完整,经过几天的仔细研究,终于全部搞通。现分享出来,供有需要的同学参考。
1.彩色bitmap 转 彩色 Hobject
public void Bitmap2HObjectBpp24(Bitmap bmp, out HObject image)
{
try
{
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData srcBmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
HOperatorSet.GenImageInterleaved(out image, srcBmpData.Scan0, "bgr", bmp.Width, bmp.Height, 0, "byte", 0, 0, 0, 0, -1, 0);
bmp.UnlockBits(srcBmpData);
}
catch (Exception ex)
{
image = null;
}
}
2. 8位灰度bitmap 转 Hobject
public void Bitmap2HObjectBpp8(Bitmap bmp, out HObject image)
{
try
{
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
BitmapData srcBmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
HOperatorSet.GenImage1(out image, "byte", bmp.Width, bmp.Height, srcBmpData.Scan0);
bmp.UnlockBits(srcBmpData);