Qt中的RGB图像处理



我正在努力将图像转换为其红色,蓝色和绿色通道。

我正在使用Qt C++,我已经上传了原始图片并显示在我的小部件中,我知道RGB转换将具有一种逐像素更改的for循环,我只是不确定我应该使用什么功能来更改循环中的这些像素。

有什么建议吗? 这是我目前对红色频道的,我用QImage上传

for(int i = 0; i < Red.width(); i++)
{
for(int j = 0; j < Red.height(); j++)
{
QColor pixelC = Red.pixelColor(i,j);
pixelC.setRed(255);
pixelC.setBlue(0);
pixelC.setGreen(0);

}
}
QLabel RedPic;
ui->RedPic->setScaledContents(true);
ui->RedPic->setPixmap(QPixmap::fromImage(Red));

所以显然连续工作 24+ 小时从来都不是一个好主意,在好好休息之后,我想通了。如果其他人也有这个问题,请随时与我联系,这实际上是一个非常简单的解决方案。

这里有一些关于我所做的事情的提示,这是我的 for 循环:

QRgb* rgbpixel = reinterpret_cast<QRgb*>(scan + j*depth);
int Red = qRed(*rgbpixel);
*rgbpixel = QColor(Red, 0, 0).rgba();

如果你在谈论QImage类,那么这个类已经是一个 RGB 图像,QRgb QImage::pixel(int x, int y)作为访问器。 如果你在谈论QPixmap,看看QImage QPixmap::toImage().

您可能希望使用QColor(QRgb color)QRgb(将其数据存储在整数中(转换为QColor(将通道作为成员(。

如果您需要特定内容的示例代码,请询问。如果从QPixmap开始,则结果可能是转换为QImage,将像素转换为QColor,更改那里的通道,转换回QRgb,插入QImage,将QImage转换为QPixmap

最新更新