2016-02-09 4 views
0

привет Я хочу отображать полутоновое изображение с помощью qt. моя проблема, когда у меня есть изображение я получить пиксельотображение изображений в оттенках серого с использованием qt

QRgb pixel=imagef->pixel(i,j); 
int color= qGray(pixelfft); 

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

imagef-> SetPixel (I, J, QRgb (х, х, х));

, но когда я выбираю белое и черное изображение, а затем я делаю мое лечение и когда я показать ему, что работу dosen't только с этим

imagef-> SetPixel (I, J, qGray (QRgb (х, х, х)));

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

+0

Значит, в основном изображение в оттенках серого имеет другой формат изображения? – UmNyobe

ответ

0

Кажется, ваше изображение в оттенках серого имеет другой формат, который RGB или ARGB. Обратите внимание, что подпись SetPixel является

void QImage::setPixel(int x, int y, uint index_or_rgb) 

в RGB или ARGB, значение будет иметь значение ARGB, в моно или индексироваться будет индексом цвета.

Если ваше изображение уже в оттенках серого, я вижу сбои, почему вы должны его обработать. Таким образом, просто делать

switch(image.format()) 
{ 
    case Qimage::Indexed: 
     //drawing in indexed is not possible 
     image = make_gray_indexed_processing(image); 
     break; 
    case QImage::Format_RGB32: 
    case QImage::Format_ARGB32: 
     image = make_gray_rgb_processing(image); 
     break; 

    case QImage::Format_Mono : 
    case QImage::Format_Mono_LSB : 
     //do nothing 
     break; 
    default: 
     //out of scope of answer 
} 
+0

'QImage :: pixel()' и 'setPixel()' очень медленны. Получите/установите значения пикселей из необработанного пиксельного буфера, если это возможно. См. ['QImage :: bits()'] (https://doc.qt.io/qt-5/qimage.html#bits) и ['QImage :: scanLine()'] (https: // doc. qt.io/qt-5/qimage.html#scanLine). Пример: http://stackoverflow.com/a/2095127/4149835 и http://stackoverflow.com/a/6102833/4149835 –

+1

@ Владимир Бершов [Мне это хорошо известно] (http://stackoverflow.com/a/27952197/1122645). Но его там нет. – UmNyobe

Смежные вопросы