Halcon同类软件 Malcon 识别圆弧上的条码 极坐标转换 PolarTransImageExt

识别圆弧上的条码,涉及到一些极坐标转换的知识

,先要用算子PolarTransImageExt将圆弧转换为矩形,

这样才能被算子FindBarCode识别到。

在这里插入图片描述

下边讲解下流程:
1、提取出圆弧条码的半径区域和识别角度(一般为360度);

2、圆弧转换为矩形;

3、条码和背景颜色转换下,放大一倍图像;

4、识别条码,得到条码矩形区域;

5、条码矩形区域转换为圆弧区域到原图上;

ReadImage(ho_ModelImage, ‘logpolar.bmp’);//读取图像
Threshold(ho_ModelImage, moDst2, 0, 100);//二值化提取区域
ClosingCircle(moDst2, moDst2, 3.5);//对圆形态学关操作
Connection(moDst2, moDst2);//连通区域
SelectShape(moDst2, Ring, ‘width’,‘and’, 550, 750);//通过长度挑选区域
SelectShape(Ring, Ring, ‘height’, ‘and’, 550, 750);//通过高度挑选区域
ShapeTrans(Ring, OuterCircle, ‘outer_circle’);//将区域转换为外部圆
Complement(Ring, RegionComplement);//取反
Connection(RegionComplement, ConnectedRegions);//连通区域
SelectShape(ConnectedRegions, ConnectedRegions, ‘width’, ‘and’, 450, 650);//通过长度挑选区域
SelectShape(ConnectedRegions, InnerCircle, ‘height’, ‘and’, 450, 650);//通过高度挑选区域
SmallestCircle(Ring, Row, Column, OuterRadius);//将区域缩小为一个外部圆
SmallestCircle(InnerCircle, InnerRow, InnerColumn, InnerRadius);//将区域缩小为一个内部圆
WidthPolar := [1440]
HeightPolar := [52.2]
HeightPolar2 := [106.4]
// HeightPolar = OuterRadius - InnerRadius - 10;
//OuterRadius2=OuterRadius-5; InnerRadius2=InnerRadius+5;
OuterRadius2 := [346]
InnerRadius2 := [305]
PolarTransImageExt(ho_ModelImage, moDst, Row, Column, 6.28, 0, OuterRadius2, InnerRadius2, WidthPolar, HeightPolar, “”)//将圆转换为矩形
InvertImage(moDst, ImageInvert)//条码要转换为黑色,背景为白色
ZoomImageFactor(ImageInvert, ImageZoomed, 1, 2, ‘’)//条码有点小,放大长度一倍
CreateBarCodeModel(’’, ‘’, BarCodeHandle)//创建条码实例,用来检测
FindBarCode(ImageZoomed, SymbolRegions, BarCodeHandle, ‘Code 128’, DecodedDataStrings)//查找code 128格式的条码
ClearBarCodeModel(BarCodeHandle)//清除条码实例,因为已经找到条码了
GetImageSize(ho_ModelImage, Width, Height)//获取图像的长宽
ZoomRegion(SymbolRegions,SymbolRegionsZoom,1,0.5)//对识别出来的条码的区域缩小一倍,因为刚才图像放大一倍了
//将条码区域由矩形转换为弧形,好显示在一开始的图像里
PolarTransRegionInv(SymbolRegionsZoom, CodeRegionCircular, Row, Column, 6.28, 0, OuterRadius2, InnerRadius2, 1440, 52, Width, Height,‘nearest_neighbor’)
OverpaintRegion(ho_ModelImage, CodeRegionCircular, 255, 0)//将弧形条码区域填充为白色255

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值