问题标签 [halcon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
237 浏览

halcon - HALCON 警告中 HAND-EYE 校准中的姿势对不一致

我正在尝试使用 HALCON 为 UR5 协作机器人执行手眼校准。我正在使用'hand_eye_stationarycam_calibration.hdev。但每次,我都会收到一条警告:'不一致的姿势对在此处输入图像描述

有人可以在这个问题上帮助我吗?我也尝试了所有的姿势类型,但警告和错误结果仍然存在。

0 投票
1 回答
79 浏览

gradient - Halcon - 渐变亮度

我有一张在光线不均匀的情况下拍摄的图像。在相机的上方和下方有一个光,因此,图像在中心(从上到下)被适当地照亮,但左右却很暗。

有没有办法应用渐变的增亮滤镜?所以它越靠近外边缘,它就越亮?

以这种方式解决了 Mannari 的答案:

0 投票
1 回答
95 浏览

geometry - Halcon - 扩展与另一个区域相交的区域

左图是我的起始情况:红色是一个区域,黑色是一个 XLD 矩形。

权利是我想要达到的。我需要在区域与矩形接触的任何地方,该区域都被 X 像素拉伸。我的方法是绘制一个宽度为“X”的矩形区域,然后将其合并为“union2()”,但我很难找出矩形的 Y 坐标。更好的是,我可以找到交叉点,但我不知道如何找出它是交叉点的“开始”还是“结束”,所以它是矩形的顶部还是底部。我是认为第一个总是开始,然后它们交替出现,但实际上交集在同一个像素处返回两个值。

在此处输入图像描述

0 投票
1 回答
59 浏览

region - Halcon - 拉伸一个区域

一个区域如何被拉伸?

如果我有一个区域,任何形状,并且想水平拉伸它,而不是垂直拉伸,怎么做?

0 投票
2 回答
130 浏览

3d - Halcon - affine_trans_contour_xld 的 3D 等效项

我有一个 XLD 轮廓,我需要将其从世界平面转换为图像平面。但我只能找到affine_trans_contour_xld,它接受 2D 垫,而不是 3D 垫。我怎样才能将 xld 轮廓从世界平面转换为图像平面?

基本上我需要的是相反的contour_to_world_plane_xld

编辑:我认为解决方案是找到 XY 平面的 2D Mat,但也找不到如何做到这一点..

0 投票
2 回答
414 浏览

region - Halcon - 验证区域是否为空

这一行:

intersection(CurrentZplaneTransRegion, Unshifted, CurrentRegion)

有时会返回一个空白区域。我需要抓住这种情况。如何验证是否currentRegion为空?

0 投票
1 回答
93 浏览

goto - Halcon - Goto 语句

Halcon中有Goto语句吗?我无法在文档中找到它。我需要的是在特定条件下跳回大约 50 行代码。由于这种情况很少发生,我想避免使用循环来执行它。是否有 goto 语句或类似的东西可以让我跳回到同一过程中的前一点?

0 投票
1 回答
258 浏览

c - Halcon/HDevelop 套接字发送通用图像数据

Halcon Progress 20 为不同的协议(HALCON、UDP、TCP)提供了套接字,并提供了使用通用套接字通信发送任意数据的send_data(Socket, Format, Data, To)过程。如何使用此过程将图像从 hdevelop 发送到另一个连接的套接字?

Halcon 程序化可视化解决方案指南指出以下内容:

有时可能不需要应用标准的 HALCON 可视化运算符,而是使用自编程版本。这可以通过使用为所有数据类型提供的访问函数来实现。这些示例是get_image_pointer1get_region_runsget_contour_xld。像这样的运算符允许完全访问所有内部数据类型。此外,它们以各种形式(例如,游程编码、点或轮廓)提供数据,以使进一步的处理更容易。基于这些数据,可以轻松开发自编程的可视化。

这是我认为应该如何工作的一个基本示例:

最后一行send_data (Socket, Format, [Pointer], [])抛出异常:

未处理的程序异常:

在过程“主”行中调用“send_data”时 HALCON 操作员错误:78。

格式规范与数据不匹配(HALCON 错误代码:5628)

显然,这Pointer是指向图像在内存中的位置的地址,而不是可能导致错误的实际数据。

有没有办法在 HDevelop 中正确转换原始指针以通过套接字发送它?或者这只能在使用 Halcon 库的外部 C/C++/C# 应用程序中完成?

Halcon文档gen_image_pointer1仅提供此 C 示例:

我想使用 HDevelop 的功能,而不是使用 C/C++/C# 中的套接字(尽管这是另一种方式)。唯一缺少的是将图像从 HDevelp 中实际发送到接收套接字。

0 投票
1 回答
377 浏览

halcon - 如何在 HALCON 中选择最大的区域?

我想从一组区域中选择最大的区域(ConnectedRegions在这种情况下)。

实现这一目标的优雅方法是什么?

0 投票
1 回答
129 浏览

type-conversion - 将 XLD 转换为区域

我正在使用此代码将 XLD 转换为区域:

XLD 是这样的:

在此处输入图像描述

结果区域如下所示:

在此处输入图像描述

如果我们将它们重叠,我们可以看到存在一些差异,特别是用箭头标记的那个:

在此处输入图像描述

我知道浮点值被转换为其最接近的整数,所以平均而言,我希望一些向上舍入,一些向下舍入,并且面积大致相同。我无法理解这种情况下的差异,因为看起来这些值都被四舍五入了。

我也尝试过使用set_system('neighborhood',4),它变得更好了一点,但不是很多。这也会在其余代码中引起一大堆问题,所以我把它设置回 8 和以前一样。

如何更精确地进行这种转换?