灰度化
由于QImage的图像不管怎么样都是三通道的图像数据,所以灰度化就把QImage的三个颜色设置成一样就相当于OpenCV中的单通道图像。
QImage* MainWindow::greyScale(QImage * origin)
{
QImage * newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);
for(int y = 0; y<newImage->height(); y++){
//获取一行像素的首地址
QRgb * line = (QRgb *)origin->scanLine(y);
for(int x = 0; x<newImage->width(); x++){
//提取像素
//灰度转换的一种方法(R G B 求平均值)
int average = (qRed(line[x])*0.299 + qGreen(line[x])*0.587 + qBlue(line[x])*0.114);
newImage->setPixel(x,y, qRgb(average, average, average));
}
}
return newImage;
}