2011-01-29 2 views
1

Я работаю над встроенной системой домашнего наблюдения. Я хочу подключить пару камер с последовательной поддержкой JPEG, может быть, пару датчиков двери и т. Д. Проблема в том, что я не могу на всю жизнь понять, как подключить камеру к микроконтроллеру. Кадры, потоковое видео, это неважно - я не могу найти какую-либо документацию по этому поводу.Встраиваемый захват изображения - нужна помощь при запуске

Я понимаю последовательную связь, и большая часть документации камеры, которую я обнаружил там, описывает протокол, необходимый для того, чтобы проинструктировать камеру отправить поток данных до UC для захвата. То, что они не показывают, - это то, что вы должны делать с данными, как только вы их получите.

Here's an example.

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

Я искал повсюду какую-то учебную программу, но придумал сухую. Я не уверен, какой процессор я буду использовать для этого проекта, но этот вопрос не зависит от процессора. Все, что мне нужно, это алгоритм, возможно, заглянуть в библиотеку, если таковая существует. Я возьму этот процесс и адаптирую его к своему оборудованию, я просто не могу найти места для начала.

У вас есть кто-нибудь из вас?

+0

Это плохо написанная спецификация! «Размер пакета не должен быть нечетным или кратным 16», а затем устанавливает пределы 64 и 512, кратные 16, поэтому, вероятно, они означают «должен». И пакет, вероятно, является неправильным переносом пакета ... В любом случае, если вы повторно собраете «пакеты» и напишите их как файл, вы случайно получите действительный jpeg? Вы могли бы хотя бы найти заголовок jpeg. Декодирование их сырого изображения может быть сложнее, но вы можете получить где-то со структурированной сценой (вертикальное или горизонтальное белое/черное разделение) и шестнадцатеричный дамп ... –

+0

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

+0

@ Chris - Я рад слышать, что вы считаете, что это плохое техническое описание, я, конечно, не получил много от этого. @ misha - В этом проблема: у меня пока нет камеры. Я ищу систему _design_, но я даже не знаю, что мне нужно. Я надеюсь, что это какой-то учебник, который покажет мне, чего ожидать от разных типов камер, и что делать с данными, которые они мне отправляют. Я не обязательно ожидаю, что вы, ребята, напишите такой учебник, я надеюсь, что он уже написан, и я просто не смог его найти. Вы знаете какую-либо документацию? – Glenn

ответ

3

Я думаю, что детали довольно ясно странице 10 в этом документе:

http://www.4dsystems.com.au/downloads/micro-CAM/Docs/uCAM-DS-rev4.pdf

Во-первых, один пакет между 64 до 512 байт - гибко определяемые программистом. Размер изображения - это фактическое изображение JPEG ... ничего более или менее .... просто чистый образ JPEG. Таким образом, уравнение для вычисления количества пакетов на основе image_size/package_size приведено на стр. 10.

Далее следует, что (package_size - 6) должно использоваться повсеместно, поскольку 6 байтов используются для не-данных цель (так что (package_size - 6) будет всего лишь данными, но вам нужно собрать ее самостоятельно.

Чтобы собрать данные из пакета, вам необходимо снять 4 байтовый заголовок + 2 байтовый трейлер и соединить все это из всех пакетов последовательно один за другим.

Прочие факты:

a. Команда «Установить размер пакета» должна быть отправлена ​​с хоста на CAM - перед командой «SNAPSHOT», которая захватывает изображение с камеры в буфер памяти CAM.

b. Далее следует отправить команду «SNAPSHOT» для захвата изображения в буфер памяти.

c. Последнее - отправить команду «GET PICTURE» (только один раз, но данные будут возвращаться несколько раз - см. Диаграмму на стр. 15), чтобы извлечь все изображения .... и она вернется в виде «пакета», поскольку мы определили размер ранее в «установленном размере пакета». Поскольку u вычисляет формулу u, она будет знать, когда перестать запрашивать следующий пакет. И есть байт проверки - вы должны использовать это, чтобы убедиться, что данные верны.

+1

Что касается совпадений с тем, что я заключил, пытаясь перевести неверные утверждения в лист данных обратно к их вероятному намерению, но также будьте осторожны с этим предупреждением о необходимости перезапуска вещи после определенных пакетов размера. Это касается того, насколько вы можете пойти, не покупая устройство и не пытаясь его использовать. В этот момент, если это не хобби-проект, время разработки созерцания уже добавило больше, чем стоимость оборудования. –

+0

Это, вероятно, не нужно упоминать, но, скорее всего, будет намного легче выполнить начальное тестирование с использованием ПК, а не встроенной платформы; небольшое количество времени, затрачиваемое на запись функций обертки для последовательного интерфейса ОС ПК и встроенной системы, может сделать функциональную логику практически переносимой между двумя. –

+0

Спасибо всем. Это очень увлекательный проект, так что это то, чем я занимаюсь. Я просто не смог сойти с земли с помощью правильного алгоритма. Это отличное место для начала. Кроме того, Крис: Большое предложение об использовании ПК для прототипирования и первоначального тестирования. – Glenn

0

Я не использовал эту камеру, но похоже, что она работает точно так же, как камера (C328), которую я использовал. Отправьте команду разрешения изображения/цвета. Когда вы хотите получить изображение, отправьте команду захвата изображения.Камера отвечает, отправив двоичный файл по последовательной ссылке.

Смежные вопросы