Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

How to display opencv output window inside a Label or Widget in form.ui



  • Hi all,

    I am new to Qt and opencv, I am programming a graphical interface to record a video through webcam using opencv libraries in Qt. Problem is when I push the start recording button on my interface, a new window gets launched and I dont want that. It should be like after pressing the start recording button it should display the opencv output of webcam inside a Label or Widget on my graphical interface and not on a newly launched window.

    I am using Qt 5.8 on windows 10. Below is the while loop which captures the frame and displays in a window

    while (1)
                {
    
                    Mat frame;
    
                    bool bSuccess = cap.read(frame); // read a new frame from video
    
                    if (!bSuccess) 
                   {
                         cout << "ERROR: Cannot read a frame from video file" << endl;
                         break;
                    }
    
                     oVideoWriter.write(frame); 
                     
    
                    imshow("MyVideo", frame); //this line launches a new output window
    
    
                   if (waitKey(10) == 27) 
                   {
    
                        cout << "esc key is pressed by user" << endl;
                        return ;
                        
                    }
                }
    

    Can anyone please guide me on how can I embed the opencv output window inside a Label or Widget in my form.ui.

    Thank you for your time and knowledge.


  • Lifetime Qt Champion

    Hi,

    AFAIK, you can't direclty.

    One way to do it is described here.



  • @SGaist I tried with your suggested link and it works. Thank you so much


Log in to reply