Qt — отображение неподписанного символа после манипулирования пикселями

Я пытаюсь отобразить мои манипулированные пиксели (их оттенки серого), которые представлены как неподписанные символы безуспешно.

Вот код:

#include "mainwindow.h"#include <QApplication>
#include "qimage.h"#include <QImage>
#include <QLabel>
#include <QColor>
#include "qcolor.h"#include <Qdebug>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
int height;
int width;
unsigned char *p, *p_begin;
QImage img("C:\\Users\\Owner\\Pictures\\2013-09-26\\IMG_0836.JPG");
height = img.height();
width = img.width();

p = (unsigned char *)malloc(height * width * sizeof(unsigned char));
p_begin = p;

for (int row = 0; row < height; ++row)
{
for (int col = 0; col < width; ++col)
{
QColor clrCurrent( img.pixel( col, row ));
*p = (unsigned char)((clrCurrent.green() * 0.587) + (clrCurrent.blue() * 0.114) + (clrCurrent.red() * 0.299));
p++;
}
}

p = p_begin;
for ( int row = 0; row < height; ++row )
{
for (int col = 0; col < width; ++col)
{
QColor clrCurrent(img.pixel(col, row));

clrCurrent.setBlue((int)(*p));
clrCurrent.setGreen((int)(*p));
clrCurrent.setRed((int)(*p));
p++;
}

}
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(img));
myLabel.show();

return a.exec();
}

Я действительно не знаю, почему, но изображение, которое представляло собой, является оригинальным изображением, а не манипуляцией, которое должно быть серым.
Я пытался найти в сети без удачи, есть идеи?
Спасибо заранее.

0

Решение

Эта часть кода:

QColor clrCurrent(img.pixel(col, row));

clrCurrent.setBlue((int)(*p));
clrCurrent.setGreen((int)(*p));
clrCurrent.setRed((int)(*p));
p++;

не меняет img.
Он просто принимает пиксельный цвет для временного объекта, меняет этот объект, затем этот объект просто уничтожается без влияния на изображение.

Я рекомендую вам проверить функцию scanLine QImage. А затем поменяйте цвет пикселей в одном цикле for на месте. Это будет работать намного быстрее и изменит изображение.

3

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

Других решений пока нет …

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