В настоящее время я использую OpenCV 2.4.6 с gcc 4.7.3 на Lubuntu x64. Для просмотра AVI я использую gnome-mplayer 1.0.8 (установленный с Lubuntu). Весь комплект работает на виртуальной машине в VirtualBox.
Я использую общий набор кода для захвата изображений, а затем добавляю их в VideoWriter
. В (втором) потоке я делаю это:
cv::Mat lImg;
cv::VideoCapture lVidCap( 0 );
cv::VideoWriter lVidWrt( lFileName, CV_FOURCC( 'M', 'J', 'P', 'G' ), 15, cv::Size( 640, 480 ) );
while ( true )
{
// Here check if we must quite the loop.
lVidCap.read( lImg );
lVidWrt.write( lImg );
}
// This is not required according to the doc...
lVidWrt.release();
Он работает правильно.
В другое время я должен ждать много секунд, прежде чем файл будет действителен (несмотря на то, что указано, что для него требуется много Mb, в gnome-mplayer написано 0k).
Почему файл не всегда доступен сразу после уничтожения VideoWriter?
Если у вас есть предложение, я бы хотел его прочитать! ;-) Благодарю!
См. Вопросы OpenCV для более длительного ответа. Проблема заключается, вероятно, в том, как VirtualBox синхронизирует свои виртуальные диски...