【问题标题】:RGB image processing in QtQt中的RGB图像处理
【发布时间】:2019-03-20 04:32:58
【问题描述】:

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

我正在使用 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));

【问题讨论】:

  • 请添加一些代码示例。没有人为您编写代码。至少,向社区展示你的尝试。
  • 您可以同时执行 (QtConcurrent::mapped) 或通过像素图的二进制掩码来执行此操作吗?除非您尝试将原始位转移到 5.6.5 或 10.12.10 rhb 容器中,在这种情况下,您需要了解数据的外观并修改一小段内联代码以将所有内容转移到位。

标签: c++ qt rgb channels


【解决方案1】:

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

以下是关于我所做的一些提示,这是在我的 for 循环中:

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

【讨论】:

    【解决方案2】:

    如果您在谈论 QImage 类,那么该类已经是 RGB 图像,QRgb QImage::pixel(int x, int y) 作为访问器。 如果您在谈论QPixmap,请查看QImage QPixmap::toImage()

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

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

    【讨论】:

      猜你喜欢
      • 2017-04-23
      • 2021-02-10
      • 1970-01-01
      • 2015-10-19
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      相关资源
      最近更新 更多