Чтение видео с openCV

У меня есть видеоengine2.avi что я хочу прочитать и показать с openCV. Вот мой код:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;

int main(int argc, char** argv)
{
    string filename = "D:\\BMDvideos\\engine2.avi";
    VideoCapture capture(filename);
    Mat frame;

    if( !capture.isOpened() )
        throw "Error when reading steam_avi";

    namedWindow("w", 1);
    for( ; ; )
    {
        capture >> frame;
        //if(!frame)
        //    break;
        imshow("w", frame);
        waitKey(20); // waits to display frame
    }
    waitKey(0);
}

Этот код не работает, если мой файл имеет кодекYUV 4:2:2 (UYVY) (Я записал видео с помощью Direct-Show), но работает, когда я использую видео, я взял с openCV !!

У кого-нибудь есть идея, как это может работать?

ОБНОВИТЬ:

Прочитав некоторые ссылки, предположив, что перехват исключительной ситуации решит проблему, я изменил свой код. Это не помогло, но вот модифицированный код:

cv::VideoCapture cap("d:\\BMDvideos\\engine2.avi");
cv::Mat frame;

try
{
    cap >> frame;
}
catch(cv::Exception ex)
{
    std::cout << ex.what() << std::endl;
}
catch(...)
{
    std::cout << "Unknown exception" << std::endl;  
}

Программа вылетает вcap>>frame, Я читал похожие вопросы, но они используют фрейм в YUV (4: 2: 0), в то время как мое видео имеет UYVY (4: 2: 2). Как я могу преобразовать это в цветовую модель RGB?

ОБНОВЛЕНИЕ 2:

После предложения karlphillip я использовал OpenCV2.4.3, но все еще получал ту же ошибку, используя код ниже:

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;

int main(){
    cv::Mat frame;
    cv::VideoCapture cap("d:\\BMDvideos\\B\\Aufnahme.avi");
    if(!cap.isOpened())
    {
        cout << "Error can't find the file"<<endl;
    }

    while(1){
        if(!cap.read(frame))
            imshow("",frame);

        cv::waitKey(33);
    }
    return 0;
}

Ответы на вопрос(3)

Ваш ответ на вопрос