2017-08-14 3 views
-1

J'étudie des problèmes de reconnaissance de devise liés au Vision SDK d'iOS11. J'ai des problèmes pour gérer VNHomographicImageRegistrationRequest, ce qui détermine la matrice de distorsion en perspective nécessaire pour aligner le contenu de deux images. Mais je ne pouvais pas trouver comment envoyer deux paramètres d'images dans cette API, quelqu'un peut-il m'aider?Est-ce que quelqu'un a essayé comment utiliser vision api (VNHomographicImageRegistrationRequest) dans ios 11?

Répondre

1

flux cadre de Vision d'Apple est toujours le même: Demande -> Handler -> Observation

Exemple:

// 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) 
    } 
} 
+0

OUI, il est sûr. Je vais compléter la version de l'objectif-C comme suit –

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; 

}

`` `