0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
|||||||||||
1 | |||||||||||
Linux. Передача объектов через сокеты. Как?30.03.2012, 10:55. Показов 6345. Ответов 25
Метки нет (Все метки)
День добрый, господа! Мое первое сообщение на форуме, прошу любить и жаловать)
Написал небольшой сервер и клиент, клиент отправляет строку, сервер получает и отсылает обратно. Ну в общем классический пример для таких новичков как я Все отлично работает, все счастливы... Решил усложнить задачу и отправлять объект IplImage из openCV. IplImage* image = 0; А теперь, собственно, вопрос к знатокам, как это сделать? Вроде как нужна сериализация? Пожалуйста, подправьте мой код для передачи строк, чтобы я понял, как правильно передавать объект! Собственно, сервер:
0
|
30.03.2012, 10:55 | |
Ответы с готовыми решениями:
25
передача массива через сокеты, как? Передача сообщения в Windows-Linux (сокеты) Ввод и вывод команды через сокеты linux Передача файлов через сокеты |
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
|||||||||||
30.03.2012, 14:38 [ТС] | 2 | ||||||||||
Увы, мне это, похоже, мало поможет..
Добавлено через 2 часа 36 минут Так, раз никто не отвечает, попробую задать вопрос конкретнее. Есть стандартная функция
Объект класса IplImage объявлен в программе так:
Если дадите что-то почитать чтоб я сам смог разобраться, велкам!!!
0
|
30.03.2012, 16:51 | 3 |
0
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
|
30.03.2012, 17:03 [ТС] | 4 |
Так, я тут выяснил, что openCV имеет встроенные возможности сериализации.
http://robocraft.ru/blog/computervision/299.html Т.е. я могу этот объект запихнуть в xml а на другой стороне перевести обратно в объект класса. Урра! Тогда остался вопрос - а как мне с помощью вышеупомянутой функции send() отправить этот xml файл?
0
|
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
|
|
30.03.2012, 17:10 | 5 |
Этот объект, он как устроен? Если он занимает в памяти единый кусок, то можно его отправлять без всяких преобразовываний, представив как char массив.
0
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
||||||
30.03.2012, 19:14 [ТС] | 6 | |||||
Сейчас поищу, как он устроен. Если он и правда монолитный, как его в этом случае преобразовать в char массив? И как преобразовать обратно?
И еще, может быть подскажете, как передать xml файл, который можно получить встроенными средствами openCV? (см. предыдущий пост) Добавлено через 1 час 41 минуту Так, выяснилось, что можно закодировать картинку в вектор байт. Насколько я понимаю, эта CvMat уже состоит из последовательный байтов. Попробую передать ее...
Нет, увы, эти объекты не последовательные... Остается передавать xml. Как это сделать через send(), подскажите пожалуйста?
0
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
|
02.04.2012, 09:54 [ТС] | 8 |
Все, более менее разобрался, что к чему. Спасибо!
Добавлено через 15 часов 16 минут Нашел отличную статью про передачу видео из openCV по TCP/IP. Мало ли, вдруг пригодится кому. http://nashruddin.com/StrEAMin... He_nEtWoRk
0
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
|
02.04.2012, 20:27 [ТС] | 10 |
Да, я ее прочитал и повторил у себя. По локалке с вебкамеры в разрешении 640 на 480 нормально работает. А вот с интернетом беда...
Может быть подскажете мне более рациональный способ передачи видео? Был бы очень признателен! Нужно передавать видео с вебкамеры через интернет с приемлемым fps. Поправочка... Сейчас проверил сетевой трафик при передаче 640*480 по локалке, в среднем 2.5 Мбайт/сек, что уж никак не "77 Мбайт в секунду, при разрешении 320*240 ". Но это все равно много для интернета, так что жду совета! Добавлено через 23 минуты (смотрю сейчас в сторону H.264)
0
|
0 / 0 / 0
Регистрация: 30.03.2012
Сообщений: 7
|
|
02.04.2012, 21:06 [ТС] | 12 |
Тут видно что размер одной картинки 300кб, fps около 10 кадров в секунду, вот и получается трафик около 3 МБайт/сек.
Так что скажете насчет H.264 ? Может быть знаете ссылки на какие-то реализации передачи видео по этому протоколу? А то пока не могу найти ничего готового..(
0
|
02.04.2012, 21:33 | 13 |
я-то говорил о 1000 картинках. ровно столько отправляет сервер по приведенной ссылке.
поищи по этому разделу... в одной из тем, я говорил о том, что использовал libpng. что позволило сократить объем трафа в 12 раз. Добавлено через 18 минут ах да. я с ноликом перебрал)
0
|
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
|
|
23.11.2014, 13:45 | 15 |
Avazart, cvEncodeImage преобразует байты исходного изображения в зависимости от указанного формата.
Вторым аргументом данной функции она ожидает указатель на структуру IplImage, у которой есть член с названием imageData - указатель на выравненные данные изображения. widthStep = кол-во байт в строке вместе с выравниванием.
1
|
23.11.2014, 13:47 | 16 |
Во что преобразовывает?
В набор битов значений пикселей? Набор битов изображения, со всеми заголовками, палитрами итп? Как нужна функция нечто вроде cvSaveImage() но типа cvSaveImageToBuffer(IplImage* img, char* buffer,size_t size);
0
|
3072 / 1410 / 425
Регистрация: 19.01.2009
Сообщений: 3,889
|
|
23.11.2014, 13:48 | 17 |
Кстати, С++ аналог cvEncodeImage() - cv::imencode().
0
|
23.11.2014, 13:54 | 18 |
Т.е. что бы если мы записали буфер как есть файл, получили читаемую картинку.
Добавлено через 1 минуту Смотрел исходники cvEncodeImage() вызывает вроде изнутри cv::imencode().
0
|
23.11.2014, 14:14 | 20 |
Так а что на выходе получаем?
0
|
23.11.2014, 14:14 | |
23.11.2014, 14:14 | |
Помогаю со студенческими работами здесь
20
Передача из TImage через сокеты Передача файла через сокеты Передача файлов через сокеты Передача вектора через сокеты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного суматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения
PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
|
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
|
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
|
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9
Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
|
Инструкция по установке python3.13.1 в Debian 12
AlexSky-coder 03.01.2025
sudo apt update
sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev
wget. . .
|
Затестил триггеры. архив проекта прилагаю с GOA файлами в настройках архиватора проектов.
Hrethgir 03.01.2025
В этот раз нет закольцованности, потому что от неё только глюки, как я понял, логика не вырезанная. Триггеры очень быстрые если верить измерениям с помощью анализатора от Gowin.
Есть ещё регистры,. . .
|
Python в помощь DevOps
IT_Exp 03.01.2025
Причины использования Python в работе DevOps
Python стал неотъемлемой частью мира DevOps, и это не случайно. Этот язык программирования обладает множеством преимуществ, которые делают его. . .
|