2017-08-14 1 views
-1

Ich studiere Probleme bei der Erkennung von Währungen, die mit dem Vision SDK von iOS11 zusammenhängen. Ich habe Probleme, VNHomographicImageRegistrationRequest zu behandeln, die die perspektivische Warp-Matrix bestimmt, die benötigt wird, um den Inhalt von zwei Bildern auszurichten. Aber ich konnte nicht herausfinden, wie man zwei Bildparameter in diese API sendet, kann mir jemand helfen?Hat jemand versucht, wie man Vision API (VNHomographicImageRegistrationRequest) in ios 11 verwendet?

Antwort

1

Apples Vision-Rahmen Fluss ist immer das gleiche: Request -> Handler -> Beobachtung

Beispiel:

// 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

ja, sicher, es ist. Ich werde die Ziel-C-Version wie folgt ergänzen –

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; 

}

`` `

Verwandte Themen