您的位置:首页 > 编程语言 > Qt开发

qt+opencv图像在控件上的显示 槽和信号的定义.

2017-11-15 17:14 567 查看

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()
{
//编写需求代码
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: