Обработка изображений RGB в Qt

Я изо всех сил пытаюсь превратить изображение в его красный, синий и зеленый каналы.

Я работаю в 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));

-3

Решение

Если вы говорите о 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,

0

Другие решения

так что, по-видимому, работать 24 часа подряд никогда не является хорошей идеей, после хорошего отдыха я понял это. Если у кого-то еще есть эта проблема, не стесняйтесь связаться со мной, это на самом деле довольно простое решение.

Вот несколько советов относительно того, что я сделал, это в моем цикле for:

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

По вопросам рекламы [email protected]