c#调用halcon写一个根据鼠标获得当前坐标灰度值的程序

本文介绍了如何在C#中调用Halcon库,实现根据鼠标位置获取图像灰度值的功能。在解决图片大小不适应窗口及鼠标坐标对应错误的问题后,成功创建了一个动态读取并显示任意图片,获取任意位置灰度值的程序。关键步骤包括调整窗口大小以适应图像,以及正确理解鼠标坐标与图像坐标的关系。
摘要由CSDN通过智能技术生成

开始写这个博客是为了将学习c#、halcon和图像处理过程中得到的一些小见解小感悟记录下来。本文介绍的是c#调用halcon空间,得到当前鼠标位置灰度值的小程序。首先在这里默认看这文章的都是已经掌握了halcon和c#联合编程的基础知识,如果不清楚请参考查阅其它相关文章。

要实现鼠标获取当前位置灰度值,首先基本思路是:在窗体中添加halcon的窗体,用于读图显示,再添加MouseDown事件来获取当前坐标值,利用得到的坐标值代入halcon的GetGrayval算子中得到灰度值。结果如下:

图片1

一切看起来顺风顺水没什么困难。由于上面的程序只是处理单一固定图片的,于是我想改成能获取任意图片灰度值的程序,就添加了个读取文件的控件OpenFileDialog。然后就出现问题了,主要问题有两个:一是由于不同图片的大小不同,所以显示的图片可能会不铺满窗体:

图片2

  • 4
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Halcon中,您可以通过编一个带有循环的程序来实现多次画ROI的功能。下面是一个示例程序: ```hcl procedure loop_draw_rectangle(Image: HImage; var ROIs: HRegion; NumROIs: Integer) var i: Integer; Row, Column, Phi, Length1, Length2: HTuple; begin for i := 1 to NumROIs do begin disp_image(Image); draw_rectangle2(Image, Row, Column, Phi, Length1, Length2); ROIs[i-1] := gen_rectangle2(Row, Column, Phi, Length1, Length2); end; end; ``` 以上代码定义了一个名为loop_draw_rectangle的过程,它接受一个输入图像Image、一个用于存储ROI的HRegion数组ROIs和需要绘制的ROI数量NumROIs。在循环中,每次调用draw_rectangle2方法绘制一个ROI,并将其存储到ROIs数组中。 要在C#调用此代码,您可以使用Halcon/.NET接口。请确保已在C#项目中添加了Halcon/.NET引用。下面是一个示例代码片段: ```csharp using HalconDotNet; // 创建Halcon变量 HObject image, rois; HTuple numROIs = new HTuple(5); // 从文件中读取图像 HOperatorSet.ReadImage(out image, "image.png"); // 调用loop_draw_rectangle过程 HalconScripts.loop_draw_rectangle(image, out rois, numROIs); // 显示结果 HOperatorSet.DispObj(image); HOperatorSet.DispObj(rois); ``` 以上代码中,我们使用HalconScripts类来调用loop_draw_rectangle过程,并将结果存储在一个名为rois的HObject对象中。最后,我们使用Halcon中的DispObj方法来显示结果图像和ROI。 请注意,以上代码仅为示例,您需要根据实际情况进行修改和调整。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值