Halcon 和 C# 联合编程 - 图像变量的相互转换(HObject、HImage、Bitmap)
2024-08-25 18:48:12
/// <summary>
/// 灰度图像 HObject -> Bitmap
/// </summary>
public static Bitmap HObject2Bitmap(HObject ho)
{
try
{
HTuple type, width, height, pointer;
//HOperatorSet.AccessChannel(ho, out ho, 1);
HOperatorSet.GetImagePointer1(ho, out pointer, out type, out width, out height);
//himg.GetImagePointer1(out type, out width, out height);
Bitmap bmp = new Bitmap(width.I, height.I, PixelFormat.Format8bppIndexed);
ColorPalette pal = bmp.Palette;
for (int i = 0; i <= 255; i++)
{
pal.Entries[i] = Color.FromArgb(255, i, i, i);
}
bmp.Palette = pal;
BitmapData bitmapData = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format8bppIndexed);
int PixelSize = Bitmap.GetPixelFormatSize(bitmapData.PixelFormat) / 8;
int stride = bitmapData.Stride;
int ptr = bitmapData.Scan0.ToInt32();
for (int i = 0; i < height; i++)
{
CopyMemory(ptr, pointer, width * PixelSize);
pointer += width;
ptr += bitmapData.Stride;
}
bmp.UnlockBits(bitmapData);
return bmp;
}
catch (Exception exc)
{
return null;
}
}
/// <summary>
/// 灰度图像 HObject -> HImage1
/// </summary>
public HImage HObject2HImage1(HObject hObj)
{
HImage image = new HImage();
HTuple type, width, height, pointer;
HOperatorSet.GetImagePointer1(hObj, out pointer,out type, out width, out height);
image.GenImage1(type, width, height, pointer);
return image;
}
/// <summary>
/// 彩色图像 HObject -> HImage3
/// </summary>
public HImage HObject2HImage3(HObject hObj)
{
HImage image = new HImage();
HTuple type, width, height, pointerRed, pointerGreen, pointerBlue;
HOperatorSet.GetImagePointer3(hObj, out pointerRed, out pointerGreen, out pointerBlue,
out type, out width, out height);
image.GenImage3(type, width, height, pointerRed, pointerGreen, pointerBlue);
return image;
}
最新文章
- Mac 热键大全
- eclipse报错“Undefined variable from import: ...”解决方案
- 1. K线基础知识一
- backup
- Ubuntu14.04安装OpenCV2.4.9
- Windows消息大全(转)
- strut2的拦截器之对request和session的封装
- iOS系统提供开发环境下命令行编译工具:xcodebuild
- 去除UITableView中多余的分割线或者隐藏cell间的分割线
- hdu3746 KMP
- 关于JavaScript中apply与call的用法意义及区别(转)
- ASP.NET的SEO:Linq to XML---网站地图和RSS Feed
- HTML5 乱记
- Lucene查询条数限制
- 部署项目到weblogic时提示文件被锁,导致报错
- [福大软工] Z班 第5次成绩排行榜
- 记录一次mysql查询速度慢造成CPU使用率很高情况
- Python Web Service
- Python--Django学习笔记1
- MySQL升5.6引发的问题