效果图:
按键事件函数
void MainWindow::on_manualButton_clicked()
{
QString fileName = QFileDialog::getOpenFileName(this,tr("Open Image"),
".",tr("Image Files (*.png *.jpg *.bmp)"));
qDebug()<<"filenames:"<<fileName;
image = cv::imread(fileName.toStdString());
if(!image.data)
{
QMessageBox msgBox;
msgBox.setText(tr("图片为空!"));
msgBox.exec();
}
else
{
displayMat(image); //显示图片
}
}
void MainWindow::displayMat(Mat image)
{
Mat rgb;
if(image.channels()==3)
{
//cvt Mat BGR to QImage RGB
cvtColor(image,rgb,CV_BGR2RGB);
img =QImage((const unsigned char*)(rgb.data),
rgb.cols,rgb.rows,
rgb.cols*rgb.channels(),
QImage::Format_RGB888);
}
else
{
img =QImage((const unsigned char*)(image.data),
image.cols,image.rows,
image.cols*image.channels(),
QImage::Format_RGB888);
}
ui->cameraDisplayLabel->clear();
ui->cameraDisplayLabel->setPixmap(QPixmap::fromImage(img));
ui->cameraDisplayLabel->setFixedSize(200,200);//设置label控件大小
ui->cameraDisplayLabel->setScaledContents(true);//缩放图片适应大小
}