Quantcast
Channel: Qt DevNet forums: Qt Quick 1283365070**
Viewing all articles
Browse latest Browse all 4972

To Display Video Frame on QML

$
0
0
I am using opencv to display video frames from web cam on Qt gui. Now I have planed to display it on QML window(without Qt gui). I was trying to use qdeclarative view but I didn’t succeed. I am attaching the source code for displaying the video on label. In the code I used label (labelInputVideo) and push button to start the frames. Is it possible to display qimage directly on qml. Thanks in advance mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H   #include <QMainWindow> #include <QFileDialog> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include <QTimer> //#include <dialog.h> #include<QLabel>       namespace Ui { class MainWindow; }   class MainWindow : public QMainWindow {     Q_OBJECT   public:     explicit MainWindow(QWidget *parent = 0);     ~MainWindow();     QImage qimg;   private slots:     void on_pushButton_clicked();     public slots:     virtual void Frame() ;   private:       cv::Mat image; // the image variable     Ui::MainWindow *ui;     CvCapture *capture;          // OpenCV Video Capture Variable     IplImage *frame;            // Variable to capture a frame of the input video     cv::Mat source_image;     // Variable pointing to the same input frame     QTimer *imageTimer;   };   #endif // MAINWINDOW_H main.cpp #include <QtGui/QApplication> #include "mainwindow.h"   int main(int argc, char *argv[]) {     QApplication a(argc, argv);     MainWindow w;     w.show();     return a.exec(); } mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <iostream> #include <QDeclarativeView> #include <QDeclarativeComponent> #include <QDeclarativeItem> #include<QGridLayout> #include<QDesktopWidget>   using namespace cv; Mat cameraFrame;   MainWindow::MainWindow(QWidget *parent) :     QMainWindow(parent),     ui(new Ui::MainWindow) {     ui->setupUi(this);       const int imagePeriod = 1000/25;   // ms       imageTimer = new QTimer(this);       imageTimer->setInterval(imagePeriod);       connect(imageTimer, SIGNAL(timeout()), this, SLOT(Frame()));       // Use the default camera     capture = cvCaptureFromCAM( CV_CAP_ANY );//cvCreateCameraCapture(0); }     MainWindow::~MainWindow() {     delete ui;     cvReleaseImage(&frame);     cvReleaseCapture(&capture); }       void MainWindow::on_pushButton_clicked() {     if( imageTimer->isActive() )     {         imageTimer->stop();     }     else     {         imageTimer->start();     }   }   void MainWindow::Frame(){     // Capture a frame     frame = cvQueryFrame(capture);       // Point to the same frame     source_image = frame;       // Resize Image     cv::resize(source_image, source_image, cv::Size(1080,960) , 0, 0);       // Change to RGB format     cv::cvtColor(source_image,source_image,CV_BGR2RGB);         // Convert to QImage     QImage qimg = QImage((const unsigned char*) source_image.data, source_image.cols, source_image.rows, QImage::Format_RGB888); // convert to QImage       ui->labelInputVideo->setPixmap(QPixmap::fromImage(qimg));       // Resize the label to fit the image     ui->labelInputVideo->resize(ui->labelInputVideo->pixmap()->size());     }

Viewing all articles
Browse latest Browse all 4972

Trending Articles