将图片使用opencv库进行灰度化
1.加载图片
void MainWindow::on_btn_load_clicked() {
QString imagePath = QFileDialog::getOpenFileName(this,
"打开图像",
"ddd/",
"(所有图像(*.jpg *.png *.bmp *.jpeg))");
if (imagePath.isEmpty()) {
return;
}
// Mat
srcImage = imread(imagePath.toStdString());
cvtColor(srcImage, srcImage, CV_BGR2RGB);
QImage displayImg = QImage(srcImage.data,
srcImage.cols,
srcImage.rows,
srcImage.cols * srcImage.channels(),
QImage::Format_RGB888);
QImage displayImage = imageCenter(displayImg, ui->lb_show);
ui->lb_show->setPixmap(QPixmap::fromImage(displayImage));
}
2.图片居中显示
// 图片居中显示,图片大小与label大小相适配
QImage MainWindow::imageCenter(QImage qimage, QLabel *qlabel) {
QImage image;
QSize imageSize = qimage.size();
QSize labelSize = qlabel->size();
double dWidthRatio = 1.0 * imageSize.width() / labelSize.width();
double dHeightRatio = 1.0 * imageSize.height() / labelSize.height();
if (dWidthRatio > dHeightRatio) {
image = qimage.scaledToWidth(labelSize.width());
} else {
image = qimage.scaledToHeight(labelSize.height());
}
return image;
}
3.图片灰度化
// 灰度化
void MainWindow::on_btn_gray_clicked() {
Mat resultImage;
cvtColor(srcImage, resultImage, COLOR_BGR2GRAY);
// QImage 图像必须是三原色的图像
cvtColor(resultImage, resultImage, COLOR_GRAY2BGR);
QImage displayImg = QImage(resultImage.data,
resultImage.cols,
resultImage.rows,
resultImage.cols * resultImage.channels(),
QImage::Format_RGB888);
QImage displayImage = imageCenter(displayImg, ui->lbshow2);
ui->lbshow2->setPixmap(QPixmap::fromImage(displayImage));
}
opencv库图像灰度化