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

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

27.04.2011, 10:39. Показов 1566. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru