Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40

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

22.01.2017, 20:26. Показов 3211. Ответов 64
Метки нет (Все метки)

Приветствую всех!

Может быть кто сталкивался с таким моментом: извне идёт поток (по USB, к примеру), этот поток обрабатывается и выводится изображение на форму или Image, PaintBox...
Проблема вот в чём - изначально неизвестно какой длины будут данные и, естественно не известно какой "длины" будет изображение.
Как в этом случае сделать так, чтобы генерируемое изображение, уходя за нижнюю границу контейнера начинало смещаться вверх? Как бы прокручивалось до окончания приема данных...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.01.2017, 20:26
Ответы с готовыми решениями:

Создание потока,отображение на прогресс баре
как создать поток,задать ему определенный приоритет и отобразить процесс выполнения в прогресс баре? Прошу,помогите

Передача изображения в виде потока
Подскажите пожалуйста. Моя страница обрабатывает изображение и полученное изображение должно передаватся ответом в виде потока и может...

Отображение RTSP потока видео на iOS устройствах
Доброго времени суток. Мне требуется отобразить на экране телефона видео, которое вещается из интернета по RTSP протоколу. Стандартными...

64
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
23.01.2017, 17:08
А как вы вообще сохраняете получаемые данные? Т.е. под них нужно выделить некий кусок памяти. Но сложность в том, что размер этого куска неизвестен заранее. И как вы поступаете? Кусок памяти какого размера вы выделяете?

Добавлено через 13 минут
Вопрос 3: С какой скоростью поступают данные?
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,468
23.01.2017, 17:37
INA007, может уже предлагали, но разве не так:
-берем ScrollBox
-кладем в него Image
-устанавливаем у Image AutoSize = true
-когда прилетает первая строка (или N строк) делаем Image1->Picture->Bitmap->Width = 1024 - теперь у нас есть ширина
-потом просто делаем Image1->Picture->Bitmap->Height += N - теперь мы увеличили высоту - Image расширится на заданную величину без изменения более раннего содержимого, а ScrollBox позволит нам просматривать всю картинку
-кладем в Image1->Picture->Bitmap эти самые строки хоть по точкам хоть через ScanLine
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
23.01.2017, 18:25
vxg, А масштаб? У вас он будет всегда 1:1. Т.е. если картинка скажем 3000х10000, окошко как не растягивай, а во всю ширину картинки не растянешь. Да и не всегда хочется иметь окно во весь экран.
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,468
23.01.2017, 18:43
gumi250, картинка в ScrollBox поэтому всегда можно панорамировать куда надо. если высота будет 1 млн километров то конечно могут быть проблемы с ресурсами.
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
23.01.2017, 18:51  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
А как вы вообще сохраняете получаемые данные?
Сейчас их можно сохранить в обычном текстовом файле.
Вложения
Тип файла: rar 23.01.2017_14_33_NOAA17.rar (45.5 Кб, 2 просмотров)
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
23.01.2017, 18:55  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
может уже предлагали, но разве не так:
Сейчас попробую ещё раз.
Быть может в прошлый раз что-то упустил. Я так делал уже в начале.

Добавлено через 1 минуту
Цитата Сообщение от gumi250 Посмотреть сообщение
А масштаб?
Ширина этого изображения 1024. А длина - как "карта ляжет"...)

Добавлено через 53 секунды
Цитата Сообщение от vxg Посмотреть сообщение
если высота будет 1 млн километров
Нет. Обычно файл 50-60Мб и картинка не такая большая.
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
23.01.2017, 19:18  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
-потом просто делаем Image1->Picture->Bitmap->Height += N - теперь мы увеличили высоту - Image расширится на заданную величину без изменения более раннего содержимого, а ScrollBox позволит нам просматривать всю картинку
Так работает, но появляются белые полосы на картинке в момент изменения размера Image.
Миниатюры
Отображение изображения из потока  
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,468
23.01.2017, 19:21
INA007, белая ПОЛОСА может быть только внизу там где вы добавили строку и то лишь мгновение пока вы ее не заполнили или нет?
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
23.01.2017, 20:26  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
белая ПОЛОСА может быть только внизу там где вы добавили строку и то лишь мгновение пока вы ее не заполнили или нет?
Нет, эти полосы уже не заполняются.
Видимо, данные проскакивают и не отображаются в момент, когда происходит увеличение высоты картинки.
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
23.01.2017, 23:46
нужен кусок кода где вы заполняете Image1 данными
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
23.01.2017, 23:54  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
      Form1->Image1->Canvas->Pen->Width = 0;
      if(y1 > Form1->Image1->Height){
            Form1->Image1->Picture->Bitmap->Height += 10;
            //y1--;
           }
 
      while(i < (BUFSIZE/2)-1){
          data10b = bufrd[i]<<8;
          i++;
          data10b += bufrd[i];
          i++;
            Form1->Image1->Canvas->Pen->Color = RGB(data10b%256, data10b%256, data10b%256);
            Form1->Image1->Canvas->MoveTo(x,y);
            Form1->Image1->Canvas->LineTo(x1,y1);
 
            x=x1;
            y=y1;
            x1++;
      }
      i = 0;
      x=0;
      x1=0;
      y1++;
Коряво, конечно...)
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
24.01.2017, 00:24
C++
1
     if(y1 >= Form1->Image1->Height){  /// тут
Не хватает кусочка в начале где задается х, у, x1, y1
Но так все равно не делают.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Bmp=Image1->Picture->Bitmap;
Bmp->PixelFormat=pf24bit;
Bmp->Width=1024;
Bmp->Height=1000;
for(int y=0; y<Bmp->Height; y++)
{
    Byte* ptr=(Byte*)Bmp->ScanLine[y];
        int x3=0;
    for(int x=0; x<Bmp->Width; x++)
    {
        Byte Color;
        /// Тут нужно задать Color
        ptr[x3++]=Color;
        ptr[x3++]=Color;
        ptr[x3++]=Color;
    }
}
Как то так. Увеличение высоты добавте сами

Добавлено через 17 минут
А что дальше вы будете делать с сохраненной картинкой? Я в том смысле, есть какой то софт которым вы будете ее открывать и обрабатывать или вы сами собираетесь писать этот софт?
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
24.01.2017, 10:00  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
А что дальше вы будете делать с сохраненной картинкой? Я в том смысле, есть какой то софт которым вы будете ее открывать и обрабатывать или вы сами собираетесь писать этот софт?
Картинка сохраняется в *.bmp , только разрешение там получается очень высокое. Спутники передают картинку с разрешением 1.1km/пикс. Не самое высокое, конечно, но всё же интересно. Тем более, что картинка идёт в реальном времени.
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
24.01.2017, 10:07  [ТС]
Вот тут сохранённая картинка.
Можно посмотреть разрешение.
Вложения
Тип файла: rar 1.rar (15.7 Кб, 2 просмотров)
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
24.01.2017, 12:24
Ваше фото со спутника выглядит так? Это правильно?
Миниатюры
Отображение изображения из потока  
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
24.01.2017, 12:52
На сколько я понимаю подобные системы устроены иначе. Получаемые изображения с приборов, будь то фото со спутника или с микроскопа всегда храняться в исходном формате, в вашем случае это 10бит. При их обработке (например добавление яркости) всегда обрабатывается исходный формат, и уже результат обработки для отображения конвертится в бмп. Сами бмп картинки никто не редактирует, в них только конвертится результат обработки исходника. Потому что как минимум в вашем случае теряется 2 бита, да и фотошопы это проги для редактирования фоток с фотоаппарата, а не со спутника.
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
24.01.2017, 16:48  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
Ваше фото со спутника выглядит так? Это правильно?
Это пока что с тестового генератора.
Данные передаются по USB как unsigned int, но значащие там только 10 бит, как положено.

Добавлено через 1 час 29 минут
Цитата Сообщение от gumi250 Посмотреть сообщение
Сами бмп картинки никто не редактирует, в них только конвертится результат обработки исходника.
Нет-нет... Эти картинки не редактируются никак - это не нужно.
Спутник передаёт изображение в 5-ти каналах, поэтому редактировать там нечего.

Добавлено через 1 час 41 минуту
В общем, пока что вот, что получилось: https://youtu.be/qTqQdKXBGjE
Идут не полные данные, поэтому картинка не на весь экран.
0
Модератор
 Аватар для vxg
3409 / 2181 / 354
Регистрация: 13.01.2012
Сообщений: 8,468
24.01.2017, 18:01
INA007, по-моему нормально так выводит. Когда ждать картинку со спутника)?
0
1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40
24.01.2017, 20:19  [ТС]
Да, я тоже подумал пока так оставить, а после уже, когда реальная картинка прийдёт, тогда уже и корректировать, если понадобится.
Цитата Сообщение от vxg Посмотреть сообщение
по-моему нормально так выводит. Когда ждать картинку со спутника)?
;-)
Нуууу... ))) Ещё софт для декодера надо написать. Либо для STM32 на Си, либо для Altera на VHDL...
В общем, пока есть время - тружусь...)))
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
24.01.2017, 23:29
Цитата Сообщение от vxg Посмотреть сообщение
по-моему нормально так выводит. Когда ждать картинку со спутника)?
А по моему ерунда вышла. Я не знаю что у вас за генератор, но опыт мне подсказывает, что подобные картинки результат ошибки. Ищите ошибку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.01.2017, 23:29

Отображение изображения
Как отобразить Png рисунок средствами direct3d(не directDraw).

Отображение изображения
У меня есть изображение размерность 100 на 50 пикселей. В форме создаю label, в свойствах &quot;image&quot; выбираю свое изображение, задаю...

Отображение изображения
Почему изображение не становится по правому краю? &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Maksimov&lt;/title&gt; &lt;meta...

Отображение изображения
Всем привет. Как добавить загруженное изображение в приложение? if (openFileDialog1.ShowDialog() ==...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Свет в конце тоннеля
kumehtar 16.06.2026
Поймал себя на одной мысли. Раньше мне всегда казалось неправильным жить без чёткого понимания, куда всё идёт. Будто я иду по дороге судьбы, но не знаю, куда она ведёт. А раз не знаю — значит,. . .
[golang] Реализация стека с поддержкой получения минимального элемента за O(1)
alhaos 16.06.2026
155. Min Stack Задача: Реализовать стек который поддерживает push, pop, top и получение минимального элемента за O(1). Методы: NewMinStack() *MinStack — инициализация Push(val int) —. . .
[golang] Конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов.
alhaos 10.06.2026
Задача Реализовать конкурентный fetcher с ограничением максимального количества одновременных HTTP запросов. Сигнатура func Fetch(urls string, maxConcurrent int) Result Пример urls :=. . .
[golang] Состояние гонки (race condition)
alhaos 10.06.2026
Состояние гонки (race condition) Состояние гонки (Race Condition) — это ошибка, возникающая при одновременном доступе нескольких горутин к одним и тем же данным без должной синхронизации. При этом. . .
Взрослые отношения, и почему они не получаются
kumehtar 09.06.2026
Когда в детстве ребёнок не получает от родителей чего-то важного, он лишается не просто приятных переживаний, а основы для формирования определённых внутренних качеств и навыков. Если ребёнок не. . .
[golang] Worker Pool
alhaos 09.06.2026
Worker Pool Worker Pool — паттерн конкурентной обработки задач в Go. Суть: фиксированное количество горутин-воркеров читают задачи из общего канала и пишут результаты в общий канал результатов. . . .
[golang] Pipeline
alhaos 08.06.2026
Pipeline Pipeline — паттерн конкурентной обработки данных в Go. Суть: данные проходят через цепочку независимых стадий, каждая из которых работает в своей горутине и общается с соседями через. . .
Свет внутри себя
kumehtar 07.06.2026
Пусть это будет здесь lIs4oanZS9Y
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru