Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
#1

Обработка изображения

02.07.2018, 14:23. Просмотров 179. Ответов 15
Метки нет (Все метки)

Есть задача - плавно выводить данные в виде картинки на экран,
те при поступлении новых данных картинка на экране смещается влево, те выглядит это как
непрерывное перемещение фотографии.
Сейчас решается - берется

Graphics::TBitmap *gBitmap = new Graphics::TBitmap();

крайний правый столбец заносятся данные и он копируется сам в себя со сдвигом на один столбец,

C++
1
2
3
 TRect tRectFrom2(1,0,w2+1,D1600D);
 TRect tRectTo2  (0,0,w2,D1600D);
 gBitmap->Canvas->CopyRect(tRectTo2,gBitmap->Canvas,tRectFrom2);
затем выводиться на канву

C++
1
2
3
4
TRect tRectFrom(w4,0,w2,D1600D);
TRect tRectTo  (0,0,w3,D800D);            
Image1->Canvas->CopyMode=cmSrcCopy;
Image1->Canvas->CopyRect(tRectTo,gBitmap->Canvas,tRectFrom);
канва чуть меньше исходника.
Все отлично но жрет уйму ресурсов, тк перемещение довольно быстрое а каждый сдвиг это копирование
кучи точке.

Возможно как то ускорить процесс ?

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2018, 14:23
Ответы с готовыми решениями:

Обработка и преобразование изображения
на диске хранится файл с изображением в одном из графических форматов:jpeg,...

Обработка изображения без TImage
Всем привет. Возможно ли обрабатывать картинку без TImage (он очень сильно...

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

Обработка изображения. Выделение области на Image1 с последующим копированием.
Собственно, дано: исходное загружаемое изображение Image1 (24бит BMP), Image2 -...

Отрисовка изображения поверх канвы (изображения) и вращение изображения
Здравствуйте. Столкнулся с 2умя проблемами при работе с изображениями...

15
Biger18
113 / 113 / 76
Регистрация: 13.06.2018
Сообщений: 389
04.07.2018, 08:27 #2
у TBitmap ScanLine есть, и промежуточные данные не понадобятся
0
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
04.07.2018, 22:14  [ТС] #3
Основной тормоз это копирование огромного кол-ва точек каждый раз со сдвигом.
0
Biger18
113 / 113 / 76
Регистрация: 13.06.2018
Сообщений: 389
04.07.2018, 22:20 #4
memmove или rep movsd
1
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
04.07.2018, 22:28  [ТС] #5
А как memmove связать с gBitmap ?
Это будет быстрее чем CopyRect ?
0
Biger18
113 / 113 / 76
Регистрация: 13.06.2018
Сообщений: 389
04.07.2018, 22:36 #6
не знаю, пробовать надо
0
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
04.07.2018, 22:39  [ТС] #7
rep movsd это совсем трэш, надеюсь до такого не дойдет )
0
Biger18
113 / 113 / 76
Регистрация: 13.06.2018
Сообщений: 389
05.07.2018, 07:28 #8
если выигрыш будет почему же нет, проверять надо
0
Meoww
5 / 5 / 2
Регистрация: 02.10.2014
Сообщений: 73
12.07.2018, 21:46 #9
Замените все эти ущербные CopyRect на BitBlt, готовьте битмап в памяти и потом напрямую опять же блит в Image. Если и это не устроит по быстродействию/пожиранию ресурсов - ищите проблему в коде. Подобные фокусы позмоляют спокойно транслировать full-hd скриншот на Image с fps примерно в 30, при этом никакой заоблачной нагрузки и жера ресурсов нет.
0
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
13.07.2018, 00:15  [ТС] #10
Спасибо попробую.
во это не знаю как
C++
1
готовьте битмап в памяти
и особенно как его сделать кольцевым
0
TrollHammer
237 / 162 / 73
Регистрация: 22.02.2018
Сообщений: 478
Записей в блоге: 2
13.07.2018, 00:43 #11
Цитата Сообщение от Meoww Посмотреть сообщение
Замените все эти ущербные CopyRect на BitBlt
Правильно сказал
0
Meoww
5 / 5 / 2
Регистрация: 02.10.2014
Сообщений: 73
13.07.2018, 07:16 #12
Если я верно понял, хотя это врядли, вы дорисовываете к битмапу. Вообще, если честно, не до конца понятно, что вы вообще делаете) Ну а серьезно - если вы пытаетесь именно дорисовать в Image - это плохо. Держите битмап в памяти, дорисовывайте там же, а уже выводите один целый за раз - будет проще - не будет лишних расчетов и выравниваний. И еще - вынесите всю обработку в поток, ибо сейчас полагаю она у вас в таймере. А из потока уже, если не заморачиваться, через Synchronize переносите в Image. И непонятно, вы битность Bitmap указываете? Оптимальный вариант в 24бит.
0
Biger18
113 / 113 / 76
Регистрация: 13.06.2018
Сообщений: 389
13.07.2018, 07:27 #13
все еще не решено? можно реальный файл посмотреть?
0
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
13.07.2018, 07:56  [ТС] #14
Да так и делаю, меняю сначала сам битмап а затем копирую в image.
Поток скорость не увеличит, разрядность конечно указываю.
0
Meoww
5 / 5 / 2
Регистрация: 02.10.2014
Сообщений: 73
13.07.2018, 08:10 #15
Эм, а понятие "жрет кучу ресурсов" - это сколько. И вообще, если это конечно не данные телеметрии шпиенского спутника, вы бы код показали - проще было бы. Не верю что скорости не хватает именно при копировании - слишком много сам сталкивался, в текущих реалиях скорости за глаза. Поток скорости не увеличит, но снизит нагрузку - с адекватным Sleep конечно. Если вы не позаботитесь о системе - она на вас отыграется.
0
whale2
0 / 0 / 0
Регистрация: 20.10.2011
Сообщений: 50
13.07.2018, 08:32  [ТС] #16
Практически весь код, который тормозит я привел.
Еще переписать один столбец справа.
Ресурсы - где то 35-50% загрузка проц amd athlon x2 220 2.8ггц (два ядра), размер битмара 1600х1600
0
13.07.2018, 08:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2018, 08:32

Загрузка изображения в Image с сохранении соотношения сторон изображения
загрузка изображения в Image(с фиксированным размером) при этом изображение...

Изменение яркости контрастности изображения. Бинаризация изображения
Товарищи программисты помогите с разработкой алкоритма для изменеие яркости...

Обработка изображения
Здравствуйте. В С программировать начал недавно. Необходимо реализовать...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru