【发布时间】:2014-12-17 15:59:17
【问题描述】:
我正在开发一个 QT 图像应用程序。现在我想从文件中加载图像,显示它,然后单击按钮将其更改为灰度。
这是我对转换函数和图像对象的公开声明
public:
QImage * MainWindow::greyScale(QImage * origin);
QImage myImage;
在我的“打开文件”操作中,我初始化图像并将其显示在这样的标签中
myImage.load(fileName);
myImage = myImage.scaled(400, 300);
ui->imageLabel->setPixmap(QPixmap::fromImage(myImage));
这是我的灰度转换方法
QImage * MainWindow::greyScale(QImage * origin){
QImage * newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
QColor oldColor;
for(int x = 0; x<newImage->width(); x++){
for(int y = 0; y<newImage->height(); y++){
oldColor = QColor(origin->pixel(x,y));
int average = (oldColor.red()+oldColor.green()+oldColor.blue())/3;
newImage->setPixel(x,y,qRgb(average,average,average));
}
}
return newImage;
}
现在我遇到的问题是我不确定如何正确调用转换方法并将返回的对象存储在新图像中。我想发送我的原始图像(myImage),但如果我这样做
QImage newPic = greyScale(myImage);
我收到错误“无法将参数 1 从 'QImage' 转换为 'QImage *'
我是否需要传递指针或引用或其他东西?我尝试了多种组合,但没有任何效果。我对语法不是很清楚
QImage * origin
请帮忙!!
【问题讨论】:
标签: c++ qt pointers object qimage