OpenCV в iOS не правильно декодирует кадры - PullRequest
3 голосов
/ 13 февраля 2012

Я пытаюсь использовать OpenCV на iOS для анализа пикселей на видеокадрах.Я пробовал несколько файлов .MOV (все MPEG-4 AVC), но, похоже, ни один из них не декодируется должным образом.

Проблемы: - Все вызовы cvGetCaptureProperty возвращают значение 1 - cvGrabFrame (capture) всегда возвращает true (кажется, что он не находит последний кадр)

Вещи, которые на самом деле работают - высота и ширина кадра определены правильно

Есть идеи?У меня OpenCV 2.3.2 от http://aptogo.co.uk/2011/09/opencv-framework-for-ios/

    NSURL *file = [[NSBundle mainBundle] URLForResource:@"sky" withExtension:@"MOV"];

    CvCapture* capture = cvCaptureFromFile([[file path] UTF8String]);
    if (!capture)
    {
        NSLog(@"Error loading file");
        return;
    }

    cvQueryFrame(capture);

    int width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
    int height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
    NSLog(@"dimensions = %dx%d", width, height); // returns 1x1

    double framesPerSecond = cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
    NSLog(@"framesPerSecond = %f", framesPerSecond); // returns 1

    int frameCount = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_COUNT);
    NSLog(@"frameCount = %d", frameCount); // returns 1

    int frameCounter = 0;

    while (cvGrabFrame(capture))
    {
        frameCounter++;

        //NSLog(@"got a frame! %d", frameCounter);

        if (frameCounter % 50 == 0)
        {
            IplImage* frame = cvRetrieveFrame(capture);

            NSLog(@"frame width: %d", frame->width); // works correctly
            NSLog(@"frame height: %d", frame->height); // works correctly
        }

        if (frameCounter > 1000)
            break; // this is here because the loop never stops on its own

    }

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