You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用move_region算子右移区域590列后返回空区域的问题咨询

move_region移动区域后返回空区域的解决办法

问题代码

union1 (Regions, Regions) 
move_region(Regions, RegionMoved, 0, 590)
connection(RegionMoved, ConnectedRegions)

原区域信息

  • 面积:15653
  • 中心坐标:783.516, 148.932(注:Halcon中坐标格式为「行, 列」,即行坐标148.932,列坐标783.516)
  • 区域形态:一个位于图像左侧的不规则形状区域,占据较多列范围

问题原因

move_region移动后的区域完全超出了当前图像的边界范围,因此返回空区域。你的区域中心列坐标为783.5,向右移动590列后,中心列坐标变为783.5 + 590 = 1373.5。如果当前图像的宽度小于1373.5,或者区域原本的右边缘加上590后超出图像宽度,整个区域就会完全移出画布,导致算子返回空。

解决步骤

  1. 检查图像尺寸:使用get_image_size算子获取当前图像的宽度(列数),确认移动后的区域是否在图像范围内:
get_image_size(Image, Width, Height)
  1. 调整偏移量:如果图像宽度不足,减小列偏移值,确保移动后的区域至少有一部分处于图像边界内;如果只需保留部分区域,可直接处理返回的非空区域结果。
  2. 扩展图像画布:若需要完整保留移动后的区域,先创建更大尺寸的空白图像,将原区域绘制到新图像后再执行移动操作:
// 生成比原图像宽600的空白图像
gen_image_const(NewImage, 'byte', Width + 600, Height)
// 将原区域绘制到新图像上
paint_region(Regions, NewImage, NewImage, 255, 'fill')
// 执行移动操作
move_region(Regions, RegionMoved, 0, 590)

内容的提问来源于stack exchange,提问作者Vincenzo La Forgia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:42:13