Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122

Визуализация 16 битного raw файла: Нужен совет

27.04.2011, 10:39. Показов 1596. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Нужен совет, кто как решал бы такую задачу:

На входе есть монохромное изображение в виде raw файла - матрица из 2-х байтных значений интенсивности серого. И размеры этого изображения.

Задача: отобразить изображение на экране и регулировать яркость/контрастность...

У меня есть решение, но работает оно медленно и потребляет колоссальное количество ресурсов при выводе одновременно от 10 изображений...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2011, 10:39
Ответы с готовыми решениями:

Заполнение БД из текстового файла. Нужен совет!!!
Привет! Столкнулась с проблемкой: Имеется приложение на Builder, БД - Access, связь через ADO. Не могу сделать заполнение таблицы...

Нужен Совет, перезапись файла
Есть класс, наследник FileStream В определенный момент надо отчистить файл. и начать запись в него с нуля. Как это сделать? вот...

Нужен совет по чтению из файла и записи в структуру
Суть следующая я могу просто считать из файла с выводом на экран нужен совет или направление в котором Думать , для того чтобы то что я...

3
Тутошний я
 Аватар для Grey
2147 / 1202 / 225
Регистрация: 03.11.2009
Сообщений: 4,424
Записей в блоге: 2
28.04.2011, 01:38
С помощью scanline быстро читали
Например в Построение линии длины изображения

Цитата Сообщение от davian Посмотреть сообщение
потребляет колоссальное количество ресурсов
Интересно а какой объём у 10 изображений.

Добавлено через 19 минут
Цитата Сообщение от davian Посмотреть сообщение
матрица из 2-х байтных значений интенсивности серого
Хотя если у тебя уже матрица, scanline не подойдёт.
А ссылку всё же глянь.

Добавлено через 5 минут
Если размеры(разрешение) изображений большие, может стоит делать выборку через 2-3 сенселя.
1
 Аватар для davian
4 / 4 / 2
Регистрация: 07.07.2009
Сообщений: 122
28.04.2011, 08:27  [ТС]
Цитата Сообщение от Grey Посмотреть сообщение
С помощью scanline быстро читали
Например в Построение линии длины изображения
Если не трудно, пример кода в студию....
Я делаю так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Graphics::TBitmap *BMP;
BMP = new Graphics::TBitmap();
BMP->PixelFormat = pf24bit;
PRGBTriple pxl;
byte s;
 
BMP->Width =  FrameWidth;
BMP->Height = FrameHeight;
short source;//читаем сюда 2 байта из 8 битного буфера (предварительно сформированный из 16 бит)
TMemoryStream* sB;// = new TMemoryStream();//источник 8 битный буфер
sB = _8bitBuffer;
sB->Position = 0;
 
 for (int Y = 0 ; Y < BMP->Height; Y++)
 {
    // Get line pointer
    pxl = (PRGBTriple)BMP->ScanLine[Y];
    // Write line
    for (int X = 0; X < BMP->Width; X++)
    {
        sB->Read(&source,2);
    s=(byte)source;
    pxl->rgbtBlue   = s;
    pxl->rgbtGreen  = s;
    pxl->rgbtRed    = s;
    pxl++;
 
 }
 }


Цитата Сообщение от Grey Посмотреть сообщение
Интересно а какой объём у 10 изображений.
Если верить диспетчеру задач, то до загрузки 10 изображения в графе "Выделение памяти", пункт "Всего" имел значение 1361092 Кб, а после загрузки 10 из-ий "Всего" = 2473400, т.е. на отображение 10 окон ушло 1112308 Кб памяти.... Если добавлю еще 4 окна, выходит исключение "Out of System Resources"
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
28.04.2011, 12:31
Если я правильно понимаю твой принцип работы, то основной источник тормозов - это чтение короткими кусками. Лучше выделить память сразу под всё изображение (под его образ на файле, в потоке или где он там у тебя). Т.е. заводишь массив char'ов нужного размера и копируешь туда буфер цликом. И далее просто читаешь данные из памяти без всяких StreamBuffer'ов.

Второй источник тормозов - это поточечная прорисовка. Нужно ещё посмотреть, есть ли возможность работать с BMP таким образом, чтобы каждая точка НЕ рсовалась сразу. Т.е. сначала формируешь картинку в памяти, а потом одним махом её отображаешь на экране
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2011, 12:31
Помогаю со студенческими работами здесь

нужен совет, как изменить свойства файла
каким образом можно изменить свойства файла,

Копирование файла не используя системные библиотеки. нужен совет
Нужно скопировать один файл в другой( названия вводятся с клавиатуры). написал, но не работает комп виснит, а в директории появляется файл...

специфика создание 32 - х битного и 64 - х битного приложение
Господа допустим есть программа 32-х битная как из неё сделать 64-х битную . Интересует вообще как это реализуется и на сколько сложна...

Вывод 24 битного BMP из файла
Подскажите, пожалуйста, как прочитать 24 битный BMP файл и осуществить его вывод в 13h графическом видеорежиме.

Придание универсальности коду для построения осциллограммы 1-канального 8 битного wav файла
Вообщем имеется код для построения осциллограммы 1-канального 8 битного wav файла. Необходимо сделать этот код более универсальным, то есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru