Как конвертировать из камеры iPhone координаты для просмотра координат? - PullRequest
3 голосов
/ 07 декабря 2010

Я делаю приложение, которое использует OpenCV для анализа вывода с камеры iPhone и отображения результата на экране.Я знаю, что камера iPhone читает в альбомной ориентации, поэтому необходимо конвертировать перед отображением результатов на экране.Я подумал, что мне просто нужно масштабировать, поворачивать -90 градусов, а затем переводить (tx = ширина изображения), но это не работает.В сети я нашел пример кода, который приведен ниже, но он не работает ни для какой ориентации, кроме оставленного ландшафта.

Как правильно преобразовать вид из камеры в вид пользователя?

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 
{
    //lock the pixel buffer
    CVImageBufferRef pixelBuffer = CMSampleBufferGetImageBuffer( sampleBuffer );
    CVPixelBufferLockBaseAddress( pixelBuffer, 0 ); 

    //declare variables
    int bufferHeight = CVPixelBufferGetHeight(pixelBuffer);
    int bufferWidth = CVPixelBufferGetWidth(pixelBuffer);

    //a bunch of OpenCV stuff that finds features in an image and
    // returns a cameraRect

    //translate to view coordinates
    float scaleX = 320 / (float)bufferHeight;
    float scaleY = 460 / (float)bufferWidth;
    deviceRect.origin.x  = 320 - ((cameraRect.y + cameraRect.height) * scaleX); 
    deviceRect.origin.y  =       (cameraRect.x * scaleY);

    CVPixelBufferUnlockBaseAddress( pixelBuffer, 0 );
}

//elsewhere
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;

Редактировать: Я не имею в виду, что прямоугольник, отображаемый на экране, не соответствует сопоставленномуобъект, который виден в слое предварительного просмотра.Я распознаю лица, и в зависимости от ориентации телефона устройствоRect, нарисованное на экране, немного или слишком сильно отличается от лица, находящегося в слое предварительного просмотра.В левом ландшафте deviceRect идеально соответствует видимому лицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...