1.opencv Mat图像数据在qt的label控件上显示
cv::Mat img;
img = cv::imread("./1115.jpg");
cv::cvtColor(img, img, CV_BGR2RGB);
QImage qImg = QImage((const unsigned char*)(img.data), img.cols, img.rows,
img.cols * img.channels(), QImage::Format_RGB888);
ui->label->clear();
ui->label->setPixmap(QPixmap::fromImage(qImg));
ui->label->show();
2.重写void paintEvent(QPaintEvent *e)这个方法
- paintEvent这个类是QT自带的,可以根据自己的需求重写这个类.
- paintEvent可以理解成一个实时刷新的方法,可以用来视频的显示.
VideoCapture capture(0);
void MainWindow::paintEvent(QPaintEvent *e)
{
cv::Mat img;
capture>>img;
cv::cvtColor(img, img, CV_BGR2RGB);
QImage qImg = QImage((const unsigned char*)(img.data), img.cols, img.rows,
img.cols * img.channels(), QImage::Format_RGB888);
ui->label->clear();
ui->label->setPixmap(QPixmap::fromImage(qImg));
ui->label->show();
}
3.qt每个控件都可以有多个信号,多个槽
- 信号可以理解为点击按钮这个动作或点击鼠标等类似情况.
- 槽就是对应的信号执行的方法,比如点击按钮打开摄像头,点击按钮就是信号,打开摄像头就是槽.
void MainWindow::on_pushButton_clicked()
{
}