0

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

4

2 回答 2

1

苹果的 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)
    }
}
于 2017-08-14T04:49:29.770 回答
0
-(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;
}
于 2017-08-15T03:16:59.087 回答