Russian Qt Forum
Апрель 24, 2024, 02:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как создать QImage из массива чисел  (Прочитано 3633 раз)
Sergey1985
Гость
« : Ноябрь 30, 2016, 12:26 »

Имеется массив uchar data_image[]; Необходимо из него создать ЧЕРНО-БЕЛУЮ  картинку. Сложность для меня заключается в том, что здесь приходится два байта на пиксель. То есть глубина цвета 16 бит. Для 8 битной градации делал просто
QImage img(data_image, 512, 640,QImage::Format_Grayscale8);
А в данном случае как быть?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 30, 2016, 12:57 »

Насколько мне известно, такие имеджи Qt еще не поддерживает. Придется конвертировать в Greyscale (да, руками)

здесь приходится два байта на пиксель. То есть глубина цвета 16 бит.
Будьте уверены что это unsigned short (0..65536), т.к. в природе есть и др варианты (напр  2-байтный float)
Записан
Sergey1985
Гость
« Ответ #2 : Декабрь 03, 2016, 21:58 »

Придется конвертировать в Greyscale (да, руками)


А каким образом конвертировать? Ну или может просто ссылочкой хорошей поделитесь про конвертацию на Qt
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 04, 2016, 08:24 »

А каким образом конвертировать? Ну или может просто ссылочкой хорошей поделитесь про конвертацию на Qt
Такое быстрее самому написать чем ссылочки искать. Пусть данные - непрерывный массив/контейнер ushort, число эл-тов в нем = w * h. Тогда
Код
C++ (Qt)
QImage MkImage( int w, int h, const ushort * src )
{
 QImage img(w, h, QImage::Format_Grayscale8);
 for (int y = 0; y < h; ++y) {
  uchar * dst = img.scanLine(y);
  for (int x = 0; x < w; ++x) {
    dst[x] = (*src) >> 8;
    ++src;
  }
 }
 return img;
}
 
Может придется что-то изменить если исходные 2-байтовые данные имеют др порядок байт и/или др разбивку по строкам - ну то я не знаю как они организованы
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.071 секунд. Запросов: 22.