【问题标题】:Has anyone tried how to use vision api(VNHomographicImageRegistrationRequest) in ios 11?有没有人尝试过如何在 ios 11 中使用 vision api(VNHomographicImageRegistrationRequest)?
【发布时间】:2018-01-21 20:15:25
【问题描述】:

我正在研究与iOS11的Vision SDK相关的货币识别问题。 我在处理VNHomographicImageRegistrationRequest 时遇到问题,它决定了对齐两个图像的内容所需的透视扭曲矩阵。但是我找不到如何将两个图像参数发送到这个 API,有人可以帮我吗?

【问题讨论】:

    标签: ios coreml apple-vision


    【解决方案1】:

    Apple 的 Vision 框架流程总是一样的:Request -> Handler -> Observation

    例子:

    // referenceAsset & asset2 can be:
    //     CGImage - CIImage - URL - Data - CVPixelBuffer
    // Check initializers for more info
    let request = VNHomographicImageRegistrationRequest(targetedCGImage: asset2, options: [:])
    
    let handler = VNSequenceRequestHandler()
    try! handler.perform([request], on: referenceAsset)
    if let results = request.results as? [VNImageHomographicAlignmentObservation] {
        print("Perspective warp found: \(results.count)")
        results.forEach { observation in
            // A matrix with 3 rows and 3 columns.
            print(observation.warpTransform)
        }
    }
    

    【讨论】:

    • 是的,当然是。下面我会补充objective-C版本
    【解决方案2】:
    -(matrix_float3x3)predictWithVisionFromImage:(UIImage *)imageTarget toReferenceImage:(UIImage*)imageRefer{
    
        UIImage *scaledImageTarget = [imageTarget scaleToSize:CGSizeMake(224, 224)];
        CVPixelBufferRef bufferTarget = [imageTarget pixelBufferFromCGImage:scaledImageTarget];
        UIImage *scaledImageRefer = [imageRefer scaleToSize:CGSizeMake(224, 224)];
        CVPixelBufferRef bufferRefer = [imageRefer pixelBufferFromCGImage:scaledImageRefer];
    
        VNHomographicImageRegistrationRequest* request = [[VNHomographicImageRegistrationRequest alloc]initWithTargetedCVPixelBuffer:bufferTarget completionHandler:nil];
    
        VNHomographicImageRegistrationRequest* imageRequest = (VNHomographicImageRegistrationRequest*)request;
        VNImageRequestHandler* handler = [[VNImageRequestHandler alloc]initWithCVPixelBuffer:bufferRefer options:@{}];
        [handler performRequests:@[imageRequest] error:nil];
        NSArray* resultsArr = imageRequest.results;
        VNImageHomographicAlignmentObservation* firstObservation = [resultsArr firstObject];
        return firstObservation.warpTransform;
    }
    

    【讨论】:

    • 您知道如何使用 warpTransform 矩阵实际合并图像吗?
    猜你喜欢
    • 2021-03-13
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2013-07-07
    • 2010-09-21
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    相关资源
    最近更新 更多