Я хочу показать прямую трансляцию камеры, подключенной к raspberry, в приложении qt (ОС Linux). Погуглив, я обнаружил, что должен показывать видео внутри QLabel. При отображении изображения проблем нет, и все работает нормально, но когда я хочу отобразить прямой эфир внутри QLabel, окно прямого потока открывается отдельно (не внутри QLabel). подскажите, как решить эту проблему? вот мой код:
void Dialog::on_Preview_clicked()
{
command = "raspistill";
args<<"-o"<<"/home/pi/Pictures/Preview/"+Date1.currentDateTime().toString()+".jpg"<<"-t"<<QString::number(20000);
Pic.start(command,args,QIODevice::ReadOnly);
QPixmap pix("//home//pi//Pictures//Preview//test.jpg");
ui->label_2->setPixmap(pix);
ui->label_2->setScaledContents(true);
}
Этот код открывает экран захвата видео и захватывает изображение через 20 секунд. Единственная проблема заключается в том, что экран захвата (который может быть использован в качестве живого потока). не отображается внутри «Lable_2». Есть ли способ сделать это без использования библиотеки OpenCV? Если нет, подскажите, как это сделать с помощью OpenCV.
Спасибо
Это довольно просто в opencv
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main( int argc, char** argv )
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
imshow("edges", frame);
if(waitKey(30) >= 0) break;
}
return 0;
}
Поток камеры с помощью OpenCV
и показать это в QLabel
возможно.
Когда QCamera не работает, а также использовать OpenCV в проекте, может использовать VideoCapture
потоковое видео вместо QCamera.
Проблема может быть разбита на несколько этапов. В основном нам нужно:
QThread
для потоковой передачи (не позволяйте потоку GUI заблокирован).cv::VideoCapture
чтобы захватить кадр в cv::Mat
,cv::Mat
в QImage
(как конвертировать OpenCV CV :: Mat в Qimage).QImage
кадр из подпотока в основной поток графического интерфейса.QImage
на QLabel
,Я положил полный демонстрационный код в Github. это может нарисовать рамку на QLabel
и QML VideoOutput
,