halcon学习实战系列—如何提取牛奶包装盒上的吸管之Contour截取算子crop_contours_xld_region

halcon学习网看到一个帖子,特别有趣,分享给大家,顺便将Contour截取算子crop_contours_xld_region列出来,个人认为,特别好用,相比halcon自带算子crop_contours_xld,crop_contours_xld_region更灵活,具体往下看

原帖子网址:http://www.ihalcon.com/read-14233.html

我的回复网址:http://www.ihalcon.com/read-14233-11.html

开始...

 

原帖子

请教如何提取牛奶包装盒上的吸管

新手入门中,现遇到一个难题,如何提取牛奶包装盒上的吸管,图片如下,望大神们不吝赐教,谢谢

需要实现的功能是判断牛奶盒上是否有吸管,我的想法是先提取吸管,然后做模板匹配,请问此思路能否实现,或者是否有更好的思路,谢谢

感谢总版主 魁拔之十万火急 的解答

### Halcon中使用 `crop_domain` 后的仿射变换操作方法及实现步骤 在Halcon中,`crop_domain` 是一种用于裁剪图像感兴趣区域(ROI)的操作。当对局部图像进行复杂处理后,可能需要将结果还原到原始图像上并执行进一步的仿射变换。以下详细说明如何实现这一过程: #### 1. 使用 `crop_domain` 裁剪图像 首先,通过 `crop_domain` 函数将图像裁剪到特定的感兴趣区域(ROI)。此操作会限制后续处理仅在指定区域内进行,从而提高效率[^3]。 ```hdevelop * 输入图像和ROI read_image(Image, 'path_to_image') gen_circle(Region, 200, 200, 50) * 生成一个圆形ROI crop_domain(Image, Region, ImageCropped) ``` #### 2. 在裁剪后的图像上执行处理 在裁剪后的图像上执行所需的图像处理操作,例如边缘检测、模板匹配等。这些操作的结果通常以区域或轮廓的形式返回。 ```hdevelop * 示例:在裁剪后的图像上检测边缘 edges_sub_pix(ImageCropped, Edges, 'canny', 1, 20, 40) ``` #### 3. 将结果还原到原始图像 处理完成后,需将结果(如边缘、区域等)映射回原始图像坐标系。这一步可通过 `affine_trans_region` 或其他相关函数完成[^2]。 ```hdevelop * 还原边缘到原始图像 reduce_domain(Image, Region, ImageReduced) dev_display(ImageReduced) dev_display(Edges) ``` #### 4. 生成仿射变换矩阵 为了对还原后的结果进行仿射变换,需要先生成一个合适的变换矩阵 `HomMat2D`。可以使用 `hom_mat2d_identity` 创建初始矩阵,并结合旋转、缩放和平移等操作调整矩阵参数[^1]。 ```hdevelop * 创建初始变换矩阵 hom_mat2d_identity(HomMat2DIdentity) * 添加平移 hom_mat2d_translate(HomMat2DIdentity, 50, 50, HomMat2DTranslate) * 添加旋转 hom_mat2d_rotate(HomMat2DTranslate, rad(45), 200, 200, HomMat2DRotate) ``` #### 5. 对图像、区域或轮廓执行仿射变换 根据实际需求,选择适当的函数对图像、区域或轮廓进行仿射变换。以下是几种常见操作的示例代码: - **对图像进行仿射变换**: ```hdevelop affine_trans_image(Image, ImageAffinTrans, HomMat2DRotate, 'constant', 'true') dev_display(ImageAffinTrans) ``` - **对区域进行仿射变换**: ```hdevelop affine_trans_region(Edges, EdgesTransformed, HomMat2DRotate, 'nearest_neighbor') dev_display(EdgesTransformed) ``` - **对XLD轮廓进行仿射变换**: ```hdevelop affine_trans_contour_xld(Contours, ContoursTransformed, HomMat2DRotate) dev_display(ContoursTransformed) ``` #### 6. 注意事项 - 如果仿射变换后图像超出边界,建议将 `AdaptImageSize` 参数设置为 `'true'`,以确保整个变换结果可见。 - 当旋转角度超过90度时,可能需要对角度进行修正,避免图像翻转[^4]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷棵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值