QT 如何将opencv的接受的相机图像在界面上绘制出来
时间: 2024-03-17 13:45:03 浏览: 80
要将OpenCV接收到的相机图像在QT界面上绘制出来,可以通过以下步骤实现:
1. 在QT项目中添加OpenCV库文件,确保可以使用OpenCV函数。
2. 在QT界面上添加一个QLabel控件来显示图像。
3. 在QT中编写一个函数,用于将OpenCV图像转换为QImage格式的图像。该函数可以使用OpenCV的函数将Mat格式的图像转换为QImage格式的图像。
4. 在QT中编写一个函数,用于将QImage格式的图像显示在QLabel控件上。该函数可以使用QLabel的setPixmap函数将QImage转换为QPixmap格式,并将其显示在QLabel控件上。
5. 在QT中编写一个函数,用于从相机读取图像并将其显示在QLabel控件上。该函数可以使用OpenCV的函数从相机读取图像,并使用前面编写的函数将其转换为QImage格式的图像并显示在QLabel控件上。
下面是一个示例代码:
```
#include <opencv2/opencv.hpp>
#include <QImage>
#include <QLabel>
using namespace cv;
void Mat2QImage(Mat const& src, QImage& dest)
{
cv::Mat temp; // make the same cv::Mat
cvtColor(src, temp,CV_BGR2RGB); // cvtColor Makes a copt, that what i need
dest = QImage((uchar*) temp.data, temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
}
void displayImage(QImage image, QLabel* label)
{
label->setPixmap(QPixmap::fromImage(image));
label->show();
}
void showCamera(QLabel* label)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return;
Mat frame;
while (true)
{
cap >> frame; // get a new frame from camera
QImage qimg;
Mat2QImage(frame, qimg);
displayImage(qimg, label);
}
}
```
在以上代码中,Mat2QImage函数将OpenCV的Mat格式图像转换为QImage格式图像,displayImage函数将QImage格式图像显示在QLabel控件上,showCamera函数从相机读取图像并将其显示在QLabel控件上。
阅读全文