Halcon ROI透明涂抹的实现方式

时间:2024-03-04 14:01:25

Halcon ROI透明涂抹实现方式

方式一:(推荐)

HRegion mask;
hWindow.SetRgba(255, 0, 0, 100); //设置后mask将显示为透明的红色,第四个参数控制透明度,范围:0~255
hWindow.DispRegion(mask);

方式二:

//将r通道设为255实现透明的效果
//这种方式在原图像白色的地方显示效果不明显,原因在于三通道都是255最后将得到的白色,与原图像颜色接近
//可将g,b通道都设为0,此时显示清晰,但没有透明效果
HRegion mask;
HImage hImage;
HImage multiChannelImage;
HImage img_r = hImage.PaintRegion(mask, 255.0, "fill");
HOperatorSet.Compose3(img_r, hImage, hImage, out multiChannelImage);
hWindow.DispImage(multiChannelImage);

方式三:

//利用图像相加实现透明的效果
//这种方式对性能影响较大,不适用于涂抹ROI这个场景。但是提供了一种技巧,也许可用于其它地方
HRegion mask;
HImage hImage;
HImage r = hImage.CopyImage();
HImage g = hImage.CopyImage();
HImage b = hImage.CopyImage();
HImage multiChannelImage;
HImage img_r = hImage.PaintRegion(mask, 255.0, "fill");
HImage img_g = hImage.PaintRegion(mask, 0.0, "fill");
HImage img_b = hImage.PaintRegion(mask, 0.0, "fill");
r = r.AddImage(img_r, 0.5, 0);
g = g.AddImage(img_g, 0.5, 0);
b = b.AddImage(img_b, 0.5, 0);
HOperatorSet.Compose3(r, g, b, out multiChannelImage);
hWindow.DispImage(multiChannelImage);