Как превратить картинку в черно-белую в qt?

Пользователь

от ella , в категории: C/C++ , 9 месяцев назад

Как превратить картинку в черно-белую в qt?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от dayna , 7 месяцев назад

@ella 

Существует несколько способов преобразовать картинку в черно-белую в Qt.

  1. Использование фильтра QGrayscaleFilter:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
QPixmap pixmap("original_image.jpg");

QGraphicsScene scene;
QGraphicsPixmapItem item(pixmap);

QGraphicsPixmapItem *bw_item = scene.addPixmap(pixmap);
QGraphicsBlurEffect *filter = new QGraphicsBlurEffect();
filter->setBlurRadius(0);
filter->setEnabled(true);
bw_item->setGraphicsEffect(filter);


  1. Использование класса QImage:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
QPixmap pixmap("original_image.jpg");

QImage image = pixmap.toImage();

for(int y=0; y<image.height(); y++)
{
    for(int x=0; x<image.width(); x++)
    {
        QRgb pixel = image.pixel(x,y);
        int gray = qGray(pixel);
        image.setPixel(x,y,qRgb(gray,gray,gray));
    }
}

QPixmap blackWhitePixmap = QPixmap::fromImage(image);


  1. Использование своего алгоритма преобразования:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
QPixmap pixmap("original_image.jpg");

QImage image = pixmap.toImage();

for(int y=0; y<image.height(); y++)
{
    for(int x=0; x<image.width(); x++)
    {
        QRgb pixel = image.pixel(x,y);
        int gray = ((qRed(pixel)*0.3) + (qGreen(pixel)*0.59) + (qBlue(pixel)*0.11));
        image.setPixel(x,y,qRgb(gray,gray,gray));
    }
}

QPixmap blackWhitePixmap = QPixmap::fromImage(image);


Все три подхода дают результат в виде черно-белой картинки.