1.opencv Mat图像数据在qt的label控件上显示
cv::Mat img;
img = cv::imread("./1115.jpg");
cv::cvtColor(img, img, CV_BGR2RGB); //因为Mat的图像数据是BGR,所以要先将img转化位RGB
QImage qImg = QImage((const unsigned char*)(img.data), img.cols, img.rows,
img.cols * img.channels(), QImage::Format_RGB888); //图像数据转化位QImage类型
ui->label->clear(); //清空控件label
ui->label->setPixmap(QPixmap::fromImage(qImg)); //label赋值
ui->label->show(); //显示图像
2.重写void paintEvent(QPaintEvent *e)这个方法
- paintEvent这个类是QT自带的,可以根据自己的需求重写这个类.
- paintEvent可以理解成一个实时刷新的方法,可以用来视频的显示.
VideoCapture capture(0); //打开电脑自带摄像头
void MainWindow::paintEvent(QPaintEvent *e) //图像在label上实时显示
{
cv::Mat img;
capture>>img;
cv::cvtColor(img, img, CV_BGR2RGB); //因为Mat的图像数据是BGR,所以要先将img转化位RGB
QImage qImg = QImage((const unsigned char*)(img.data), img.cols, img.rows,
img.cols * img.channels(), QImage::Format_RGB888); //图像数据转化位QImage类型
ui->label->clear(); //清空控件label
ui->label->setPixmap(QPixmap::fromImage(qImg)); //label赋值
ui->label->show();
}
3.qt每个控件都可以有多个信号,多个槽
- 信号可以理解为点击按钮这个动作或点击鼠标等类似情况.
- 槽就是对应的信号执行的方法,比如点击按钮打开摄像头,点击按钮就是信号,打开摄像头就是槽.
//定义一个pushButton按钮下面就是对应的槽
void MainWindow::on_pushButton_clicked()
{
//编写需求代码
}
版权声明:本文为jmu201521121021原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。