可以不用转,Halcon提供了HObject作为图形类型变量的基类,可以使用算子方式静态方法操作,那么都是HObject基类对象操作,无需关心具体类型。
而HImage、HRegion、HXld等都是HObject的子类实现,采用C#本身面向对象方式编程(非算子方式)就需要具体的类型,才可以调用对应的函数。
比如C#采用静态方法读取图像:
- HObject ho_Image;
- HOperatorSet.ReadImage(out ho_Image, "clip");
- HTuple hv_Width, hv_Height;
- HOperatorSet.GetImageSize(ho_Image,out hv_Width, out hv_Height);
复制代码 C#面向对象方法读取:
- HImage ho_Image = new HImage();
- ho_Image.ReadImage("clip");
- HTuple hv_Width, hv_Height;
- ho_Image.GetImageSize(out hv_Width, out hv_Height);
复制代码 没有本质上的区别,需要注意的子类与基类转换的时候要判断下是不是基类的实例。
|