2017-10-02 5 views
0

아래 코드로 비디오 프레임을 QLabel에 표시하려하지만 불행히도 비디오는 QLabel에 표시되지 않습니다. CameraFrameGrabber에 QAbstractVideoSurface를 상속했습니다.QLabel에서 QPixmap을 표시하지 않습니다.

bool CameraFrameGrabber::present(const QVideoFrame &frame) 
{ 

    qDebug() << __FUNCTION__; 
    if (frame.isValid()) { 
     QVideoFrame cloneFrame(frame); 
     cloneFrame.map(QAbstractVideoBuffer::ReadOnly); 
     const QImage image(cloneFrame.bits(), 
      cloneFrame.width(), 
      cloneFrame.height(), 
      QVideoFrame::imageFormatFromPixelFormat(cloneFrame.pixelFormat())); 
     if (MainWindow* child = dynamic_cast<MainWindow*>(this)) { 
      //QGraphicsScene *scene = new QGraphicsScene(this); 
      //scene->addPixmap(QPixmap::fromImage(image)); 
      //scene->setSceneRect(image.rect()); 
      child->ui->label->setPixmap(QPixmap::fromImage(image)); 

      child->ui->label->update(); 
      //child->ui->graphicsView->setScene(scene); 
      //child->ui->graphicsView->update(); 

     } 
     //emit frameAvailable(image); 
     cloneFrame.unmap(); 
     return true; 
    } 
    return false; 

} 
+0

이미지에 실제 데이터가 포함되어 있는지 디버그하려고 했습니까? – JLev

+0

QLabel에서 표시 할 수없는 QVideoFrame 형식과 관련된 문제가 있음을 발견했습니다. 어떤 제안? – Veera

답변

0

문제는 QLabel 픽스맵 형식과 일치하며 MainWindow를 동적 링크 전송을 제거 Cameraframegrabber에 라벨을 추가하지 않는 VideoFrame의 형식이다.

QImage outImage = image.convertToFormat(QImage::Format_RGB888); 
    myLabel->setPixmap(QPixmap::fromImage(outImage)); 
관련 문제