一般情况下,图像的width是4的倍数的话,用以下代码便可将彩色bitmap转出halcon里的HObject
public void Bitmap2HObject(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;}
}
因为Bitmap4字节对齐,非4的整数倍宽度的图像,后面会补0来达到4的倍数。如图像width=810,每行810个字节,实际内存每行后面会补两个字节,宽度变为812个字节。如果按照上面的方法得到的图像如下图所示。

要避免这种情况,得重新搞好对应关系,我写了以下方法,可以得到正确的图像
public void Bitmap2HOb

文章讲述了如何在Halcon中处理非4的倍数宽度的图像,原始方法可能导致补0问题。作者提供了Bitmap2HObjectS方法,通过重新排列像素数据以避免这个问题,确保正确转换为HObject。
788

被折叠的 条评论
为什么被折叠?



