Тема: opencv
В общем возник следующий вопрос при записи видео средствами opencv полученное видео воспроизводится ускоренно, как это побороть?
Дабы полностью понять мой вопрос вот ссылка на тестовое видео (1.91MB) http://zalil.ru/30967405 , при воспроизведении которого обратите внимание на длительность ролика в вашем плеере и на длительность указанную на самом ролике и сравните их.
код записи:
qDebug() << "REC run record";
QDate date;
QTime time;
stopRec=true;
qDebug() << "REC stopRec=true";
//double fps = cvGetCaptureProperty (capture, CV_CAP_PROP_FPS);
double fps = 10;
qDebug() << "REC fps=10";
// размер картинки
CvSize size = cvSize(640, 480);
qDebug() << "REC CvSize size = cvSize(640, 480);";
CvVideoWriter *writer = cvCreateVideoWriter(filename.toLocal8Bit().data(), CV_FOURCC('M', 'J', 'P', 'G'), fps, size, 1);
qDebug() << "REC CvVideoWriter *writer = cvCreateVideoWriter(filename.toLocal8Bit().data(), CV_FOURCC('M', 'J', 'P', 'G'), fps, size, 1);";
assert(writer!=0);
qDebug() << "REC assert(writer!=0);";
IplImage *frame=0;
qDebug() << "REC IplImage *frame=0;";
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX, 1.0, 1.0);
while(stopRec){
QString str="Date "+date.currentDate().toString("yyyy.M.d")+" Time "+time.currentTime().toString("hh:mm:ss");
frame = cvQueryFrame( capture );
qDebug() << "REC frame = cvQueryFrame( capture );";
cvPutText(frame, str.toLocal8Bit().data(), cvPoint(10, 430), &font, CV_RGB(0, 255, 255));
cvWriteFrame(writer, frame);
qDebug() << "REC cvWriteFrame(writer, frame);";
}
cvReleaseVideoWriter(&writer);
qDebug() << "REC cvReleaseVideoWriter(&writer);";