举个例子,现在可以在界面成功显示原来的图片被灰度化,但不可以保存来做别的用处,源代码如下:
void MainWindow::on_gray_triggered()
{
// 灰度转换
cvtColor(srcImage,dstImage, CV_RGB2GRAY);
//定义大小
Size dsize = Size(ui->dstImageLable->width(),ui->dstImageLable->height());
//定义一个目标图像
Mat image2 = Mat(dsize,CV_32S);
//调整大小
cv::resize(dstImage, image2,dsize);
//先对图像进行灰度化,再对QImage进行缩放处理,结果可能会显示黑色。
//先对Mat图像进行缩放,然后再将其转换为QImage。
//给img赋值
img = QImage((const unsigned char*)(image2.data),image2.cols,image2.rows,image2.step, QImage::Format_Indexed8);
//清空label2
ui->dstImageLable->clear();
// 将img赋给label2,即主界面内右侧的标签。
ui->dstImageLable->setPixmap(QPixmap::fromImage(img));
}
想用处理好的图片做其他的事 只需要添加一行代码。
函数体中的第一行就已经实现了将图片灰度化,是QT和opencv配合实现的,opencv十分强大,他是已经封装好的,你只需要调用他一下,只要一行就实现了灰度转换,他还有很多很多的功能,读者想了解可以自行学习。
在第一行下方添加
imwrite("AAA.bmp",dstImage);
我这里的界面有一个显示图片的框框,他的名字就是dstImage,原本的图片就是在这显示,所以这句话把dstImage上显示的图片保存为名字为AAA,类型为.bmp的图片,就存放在Debug文件夹中,然后就可以把它拿出来了
注意 想起什么名字都可以 想要什么类型的图片就自己改后缀 opencv非常强大 都可以实现