@ella
Существует несколько способов преобразовать картинку в черно-белую в Qt.
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 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 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); |
Все три подхода дают результат в виде черно-белой картинки.
@ella
Вот пример кода, который преобразует изображение в черно-белое с использованием класса QImage:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Загрузка исходного изображения QImage originalImage("original_image.jpg"); // Создание нового QImage для черно-белого изображения QImage blackWhiteImage(originalImage.size(), QImage::Format_RGB32); // Проход по каждому пикселю и преобразование его в черно-белый for(int y = 0; y < originalImage.height(); y++) { for(int x = 0; x < originalImage.width(); x++) { QRgb pixel = originalImage.pixel(x, y); int gray = qGray(pixel); blackWhiteImage.setPixel(x, y, qRgb(gray, gray, gray)); } } // Сохранение черно-белого изображения blackWhiteImage.save("black_white_image.jpg"); |
Этот код загружает исходное изображение, создает новое черно-белое изображение того же размера, затем преобразует каждый пиксель в черно-белый и сохраняет результат в файл "black_white_image.jpg".