Vorrei eseguire alcune operazioni a un CVPixelBufferRef
e venire fuori con un raccolto cv::Mat
Come faccio a convertire da un CVPixelBufferRef a un cv OpenCV :: Mat
- ad una regione di interesse
- in scala ad una dimensione fissa
- equalizzato dell'istogramma
- convertito in scala di grigi - 8 bit per pixel (
CV_8UC1
)
Non sono sicuro di quale sia l'ordine più efficiente per farlo, tuttavia, so che tutte le operazioni sono disponibili su una matrice CV aperta, quindi vorrei sapere come convertirlo.
- (void) captureOutput:(AVCaptureOutput *)captureOutput
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
fromConnection:(AVCaptureConnection *)connection
{
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
cv::Mat frame = f(pixelBuffer); // how do I implement f()?
Ciao @ Robert, sai come si può fare il contrario che è quello di diciamo convertire cv :: Mat in un CVPixelBuffer o sample Buffer? Grazie. – lilouch
Il seguente codice non funzionerà almeno su iPhone 6 e iPhone6 + con iOS 10.2 che ho testato poiché l'array di pixel sottostante non è continuo nella memoria. Si prega di consultare la mia risposta aggiornata qui http://stackoverflow.com/questions/12355257/open-cv-ios-video-processing/43523459#43523459. – PalmRobotZ
E Swift? – user924