2015-11-27 4 views
0

У меня есть QWidget (названный как screenshotLabel), и постоянно его содержимое меняет. Я могу получить этот малый контент в qpixmap (называемый как originalPixmap), как показано ниже.Создание видеофайла с использованием последовательности QPixmap в QT Creator- C++

originalPixmap = QPixmap(); 
QPixmap pixmap(screenshotLabel->size()); 
this->render(&pixmap); 
originalPixmap = pixmap; 

Теперь я хочу, чтобы сохранить его как видео file.But я не мог в состоянии сделать it.How я могу сохранить содержание QWidget как видео файл?

+0

Я думаю, что вы не можете делать видео в Qt, используя кучу Pixmaps, но с нетерпением ожидаете, если кто-нибудь опубликует решение! –

+0

@ Александр Тяпков. Есть ли способ сделать видео, получив контент QWidget? –

+0

Возможно, аналогичным образом http://askubuntu.com/questions/258115/converting-a-sequence-of-images-to-a-video-from-terminal –

ответ

2

Я нашел способ генерации видео с помощью OpenCV VideoWriter. Я оставляю комментарии в коде, описывающем, что происходит.

originalPixmap = pixmap; 
qImageSingle = originalPixmap.toImage(); //Convert QPicmap to QImage 

//Get QImage data to Open-cv Mat 
frame = Mat(qImageSingle.height(),qImageSingle.width(),CV_8UC3,qImageSingle.bits(),qImageSingle.bytesPerLine()).clone(); 

namedWindow("MyVideo",CV_WINDOW_AUTOSIZE); 
imshow("MyVideo", frame); 

vector<int> compression_params; 
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION); 
compression_params.push_back(9); 
try { 
    imwrite("alpha2.png", frame, compression_params); 
    VideoWriter video("out2.avi",CV_FOURCC('M','J','P','G'),10, Size(qImageSingle.width(),qImageSingle.height()),true); 
    for(int i=0;i<100;i++){ 
     video.write(frame); //Write frame to VideoWriter 
    } 
} 
catch (runtime_error& ex) { 
    fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what()); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^