HALCON图像坐标与控件坐标相互转换

HALCON图像坐标与控件坐标相互转换

1.控件坐标转换到图像坐标

代码示例:

        public Point ControlPointToHImagePoint(this HSmartWindowControlWPF Halcon, double x, double y)
        {
            // Halcon 控件宽高
            double cHeight = Halcon.ActualHeight;
            double cWidth = Halcon.ActualWidth;
            // Halcon 图像在窗口上显示的区域
            double x0 = Halcon.HImagePart.X;
            double y0 = Halcon.HImagePart.Y;
            double imHeight = Halcon.HImagePart.Height;
            double imWidth = Halcon.HImagePart.Width;
            // 缩放系数
            double ratio_y = imHeight / cHeight;
            double ratio_x = imWidth / cWidth;
            double x1;
            double y1;
            x1 = (ratio_x * x) + x0;
            y1 = (ratio_y * y) + y0;
            return new Point(x1, y1);
        }

2.图像坐标转换到控件坐标

        public Point HImagePointToControlPoint(this HSmartWindowControlWPF Halcon, double x, double y)
        {
            // Halcon 控件宽高
            double cHeight = Halcon.ActualHeight;
            double cWidth = Halcon.ActualWidth;
            // Halcon 图像在窗口上显示的区域
            double x0 = Halcon.HImagePart.X;
            double y0 = Halcon.HImagePart.Y;
            double imHeight = Halcon.HImagePart.Height;
            double imWidth = Halcon.HImagePart.Width;
            // 缩放系数
            double ratio_y = imHeight / cHeight;
            double ratio_x = imWidth / cWidth;
            double x1;
            double y1;
            x1 = (x - x0) / ratio_x;
            y1 = (y - y0) / ratio_y;
            return new Point(x1, y1);
        }

3.HALCON灰度图像转换到byte[]数组

        public static void GetImageGrayValue(HImage ho_Image, out byte[] grayValue)
        {
            HOperatorSet.GetImagePointer1(ho_Image, out HTuple hv_Pointer, out HTuple hv_Type, out HTuple hv_Width, out HTuple hv_Height);
            int len = hv_Width * hv_Height;
            grayValue = new byte[len];
            Marshal.Copy(hv_Pointer, grayValue, 0, len);
            return;
        }

4.HALCON彩色图像转换到byte[]数组

        public static void GetImageMultiValue(HImage ho_Image, out byte[] R, out byte[] G, out byte[] B)
        {
            HOperatorSet.GetImagePointer3(ho_Image, out HTuple hv_PointerRed, out HTuple hv_PointerGreen, out HTuple hv_PointerBlue, out HTuple hv_Type, out HTuple hv_Width, out HTuple hv_Height);
            int len = hv_Width * hv_Height;
            R = new byte[len];
            G = new byte[len];
            B = new byte[len];
            Marshal.Copy(hv_PointerRed, R, 0, len);
            Marshal.Copy(hv_PointerGreen, G, 0, len);
            Marshal.Copy(hv_PointerBlue, B, 0, len);
            return;
        }
Halcon是一种计算机视觉库,它提供了丰富的机器视觉功能,包括图像处理、特征检测等。如果你想在C#中实现实时显示Halcon处理后的图像,并标注出图像中的坐标,可以按照以下步骤操作: 1. **安装Halcon for .NET**:首先确保你已经安装了Halcon for .NET版本,这是Halcon提供的官方.NET接口。 2. **导入库**:在C#项目中添加对Halcon DLL文件的引用,这通常可以在Halcon安装目录下的`lib`文件夹找到。 ```csharp using HalconDotNet; ``` 3. **加载图像**:使用Halcon API读取摄像头捕获的图像或打开图片文件。 ```csharp Image image = Engine.LoadImage("camera_device", 0); // 如果是摄像头,替换为设备名称 ``` 4. **处理图像**:使用Halcon函数进行图像分析,例如寻找特征点并计算其坐标。 ```csharp LocalFeatureDetector detector = new LocalFeatureDetector(FeatureType.SIFT); VisionObjectFeatures features = detector.Detect(image, null); Point2f[] keyPoints = features.GetKeypoints(); ``` 5. **标注坐标**:将关键点的坐标绘制到原始图像上。 ```csharp image.DrawCircle(keyPoints[0], 5, Color.Red); ``` 6. **显示图像**:使用Windows Forms或其他图形控件显示处理后的图像,可能需要使用第三方库如Emgu CV或DirectX来进行更复杂的显示。 7. **更新显示**:在一个循环中,不断从相机获取新的图像,进行处理并在窗口中刷新,展示实时坐标信息。 记得处理异常,并定期清理资源,特别是释放Halcon的Image和FeatureObjects。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值