Я изо всех сил пытаюсь превратить изображение в его красный, синий и зеленый каналы.
Я работаю в 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));
Если вы говорите о 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
,
так что, по-видимому, работать 24 часа подряд никогда не является хорошей идеей, после хорошего отдыха я понял это. Если у кого-то еще есть эта проблема, не стесняйтесь связаться со мной, это на самом деле довольно простое решение.
Вот несколько советов относительно того, что я сделал, это в моем цикле for:
QRgb* rgbpixel = reinterpret_cast<QRgb*>(scan + j*depth);
int Red = qRed(*rgbpixel);
*rgbpixel = QColor(Red, 0, 0).rgba();