1 / 1 / 0
Регистрация: 11.07.2015
Сообщений: 40

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

22.01.2017, 20:26. Показов 3285. Ответов 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
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
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
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
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
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
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
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,473
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru