我发现qr代码在哪里有问题。
我需要在它周围画个边界线。
我使用AVMetadataObject bezierpath,但它不起作用。
请帮帮我。
- (void)captureOutput:(AVCaptureOutput *)captureOutput
didOutputMetadataObjects:(NSArray *)metadataObjects
fromConnection:(AVCaptureConnection *)connection
{
for (AVMetadataObject *metadata in metadataObjects)
{
AnimationView *cv = [[AnimationView alloc]initWithFrame:self.livevideo.bounds]; //creat an instance of your custom view
[cv setBackgroundColor:[UIColor clearColor]];
NSLog(@"%f",metadata.accessibilityPath.accessibilityActivationPoint.x);
[location addSubview:cv];
if ([metadata.type isEqualToString:AVMetadataObjectTypeEAN13Code])
{
}
else if ([metadata.type isEqualToString:AVMetadataObjectTypeUPCECode])
{
}
else if ([metadata.type isEqualToString:AVMetadataObjectTypeEAN8Code])
{
}
else if ([metadata.type isEqualToString:AVMetadataObjectTypeQRCode])
{
}
}
}发布于 2013-10-11 14:56:46
您将需要使用AVMetadataMachineReadableCodeObject的角属性来在检测到的代码周围绘制透视图框。
发布于 2019-03-05 17:07:02
在transformedMetadataObject(for:)上使用AVCaptureVideoPreviewLayer方法。
在下面的AVCaptureMetadataOutputObjectsDelegate方法中,previewLayer是AVCaptureVideoPreviewLayer的一个实例。
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
if let metadataObject = metadataObjects.first, let transformedMetadataObject = previewLayer.transformedMetadataObject(for: metadataObject) {
print(transformedMetadataObject.bounds)
}
}https://stackoverflow.com/questions/19293328
复制相似问题