18910140161

iOS扫描识别二维码过程中描绘二维码边框

顺晟科技

2021-06-16 10:41:44

266

用开放计算机视觉可以实现,识别二维码,并将其边框描绘出来,

如何换成苹果AVFoundation来扫描,如何描绘出二维码的边框呢?

我们知道,扫描结果AVCaptureMetadataOutputObjectsDelegate是返回了数组,而数组里面是一个个的avmetadamachinerredablecodeobject,而avmetadatamachinerredablecodeobject中有个困境数组,记录二维码的坐标,文档给出的解析如下:

/*!

@属性角

@摘要

定义机器可读代码角的(X,Y)位置的点。

@讨论

此属性的值是一组非对称字典,每个字典都是使用cgpointcreatedictionarymentation()从结构体创建的,表示对象的角相对于其所在图像的坐标。如果元数据来源于视频,则点可以表示为从0开始的标量值。- 1.角中的点与边界矩形的不同之处在于,边界与捕获图像的方向轴对齐,并且角的值位于边界矩形内。这些点按逆时针顺序排列(如果代码或图像是镜像的,则按顺时针顺序排列),从代码的左上角开始,以其规范方向排列。

*/

查阅了官方文档和相关资料,我们很容易联想到,通过困境来获取二维码的坐标,大小形状。从而进行描绘。

描绘边框主要代码如下:

/*** 专门用于保存描边的图层***/

@property(非原子,强)层*容器层

-(void)画线:(avmetadatamachinerredablecodeobject *)objc

{

NSArray * array=objc.corners

//1.创建形状图层,用于保存绘制的矩形

现金图层*图层=[[现金图层alloc]init];

//设置线宽

层。线宽=2;

//设置描边颜色

层。strokeColor=[ui Color GreenColor].背景颜色

层。fill COlOr=[ui COlOr clear COlOr].背景颜色

//2.创建UIBezierPath,绘制矩形

UIBezierPath * path=[[UIBezierPath alloc]init];

CGPoint点=CGPointZero

int index=0;

cf dictionary ref dict=(_ _ bridge cf dictionary ref()数组[index]);

//把点转换为不可变字典

//把字典转换为点,存在要点里,成功返回真实的其他错误的

cgpointmakewitticionarymentation(dict,point);

//设置起点

[路径移动到点:];

NSLog(@'X:%f - Y:%f ',点. x,点。y);

//2.2连接其它线段

for(int I=1;IAR雷。计数;i ) {

cgpointmakeinticonarymentation((_ _ bridge CFdictionary ReF)数组[i],点);

[路径addlinetoppoint : Point];

NSLog(@'X:%f - Y:%f ',点. x,点。y);

}

//2.3关闭路径

[路径close path];

layer.path=path .跳弹路径

//3.将用于保存矩形的图层添加到界面上

【自我。container layer add sublayer : layer];

}

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航