2010-08-25 8 views

ответ

5

Я сделал v4l2 захват с использованием C. Это, пожалуй, единственный язык, который я бы предпочел сделать это, как хорошо. В драйвере есть много вызовов низкого уровня. Вам необходимо сопоставить память ядра с вашим приложением и буферами копирования. Вы также должны установить тонну конфигурации для устройства. Если вам нужно, я бы подумал о написании библиотеки C и использовании Platform Invoke. Другой вариант - написать две программы и отправить данные в ваше приложение C# через какой-то IPC.

+0

+1 написать библиотеку низкого уровня на C и приложение высокого уровня на C# – abatishchev

+0

@Nate привет Нейт есть ли возможность поделиться своим кодом. я пытаюсь сделать что-то подобное –

+0

@FloodGravemind извините, что так долго у меня нет доступа к этому коду. – Nate

0

Я не знаком с Mono или C# на linux, но вам, возможно, придется написать интерфейсный модуль, который предоставляет API-интерфейс дайвера или разумную абстракцию. Я думаю, что тогда вы сможете импортировать модуль в код C#. Похоже, Mono поддерживает DLLImport.

(http://www.mono-project.com/Interop_with_Native_Libraries)

3

Вы можете использовать Emgu CV для этого, он специально рекламирует, что его можно скомпилировать с помощью Mono.

Главная сайта: http://www.emgu.com/wiki/index.php/Main_Page
Компиляция в Mono: http://www.emgu.com/wiki/index.php/Compiling_with_Monodevelop
Пример кода для веб-камеры Захват видео: http://www.emgu.com/wiki/index.php/Camera_Capture_in_7_lines_of_code