Я хочу передать изображение из приложения Java в приложение C++. Я использую сокеты в качестве метода связи, и на данный момент это хорошо работает со строками.Передача изображения между C++ и Java через Socket
Я хочу, чтобы иметь возможность передавать его в обоих направлениях (Java < -> C++).
Изображение НЕ является файлом, это объект/структура памяти. Поэтому моя основная проблема заключается в том, как кодировать изображение для передачи, чтобы его можно было использовать в Java и на C++.
Передача осуществляется на одном компьютере (нет сети, поэтому скорость не является критичной), но тем не менее, чем быстрее/эффективнее, тем лучше.
Спасибо
Примечание: Я использую OpenCV в C++, и главная цель состоит в том, чтобы обрабатывать поток веб-камеры. Я не могу/не могу использовать JavaCV или что-то в этом роде!
Да, это похоже на простой способ, но я подумал, что есть более быстрый/более эффективный способ. Потому что это означало бы пройти через каждый пиксель изображения в Java и на C++. –
@Matthieu: Сколько раз в секунду это должно произойти? Вы не можете передавать изображение без какого-либо кода, где-нибудь, посещая каждый пиксель. Я предполагаю, что теоретически ваша Java-программа могла бы (возможно, с JNI) записать полный буфер изображения в разделяемую память в формате, необходимом для программы на C++, тогда программа на C++ могла передать это непосредственно в графический API, который он использует (в качестве экранного буфера, текстуры и т. д.). –
Размер RGB может быть несколько уменьшен с кодировкой длины пробега.Вместо отправки 230 нулей вы можете отправить 230 & 0, а получатель знает, как восстановить значение. Базовый алгоритм может быть для каждой строки сканирования {RLE кодирует строку данных; отправляйте в зависимости от того, что меньше - RLE или необработанные данные}. Более сложным было бы накормить всю партию в zip-поток из Java и использовать zlib в C++ для распаковки. – locka