LINUX.ORG.RU

С++ и вебкамера


0

2

От вебкамеры мне нужно простейшее — брать кадр и работать с ним посредством C++. На всяческие побочные параметры и возможности пофигу. Многого не надо, поэтому хотелось бы и изучить по этому вопросу минимальное кол-во литературы, чтобы приступить к работе сразу.

Как я понимаю, следует использовать в кач-ве API v4l2, но даже пример на их сайте громоздкий, а с какими флагами его компилировать ниоткуда не следует (если без дополнительных, то я получаю ошибки вида main2.cpp:320: error: invalid conversion from ‘void*’ to ‘buffer*’).

В общем, на что надеяться в этом направлении? В каком формате будет работа с изображениями? Есть ли нормальные действительно короткие примеры?
Буду очень рад, если прокомментируют те, кто работали с v4l2 и особенно те, кто успешно работал с другим API

opencv предоставляет простой и удобный интерфейс для работы с веб-камерой, он боюсь opencv это не то что вам нужно.

anonymous
()

mediastreamer-2.8.0.tar.gz

anonymous
()

если без дополнительных, то я получаю ошибки вида main2.cpp:320: error: invalid conversion from ‘void*’ to ‘buffer*

Это потому что ты компилируешь Си'шный код плюсовым компилятором.

Reset ★★★★★
()

Пример наверняка все три способа получения картинки использует Примера ради - он же пример.

А ошибки приведения типов любой школьник исправить может.

mv ★★★★★
()

Бери из Opencv, там это в пару-тройку строчек делается.

LinuxUser-0x0
()

А вообще, я думаю, тебе надо язык подучить сначала.

LinuxUser-0x0
()
Ответ на: комментарий от LinuxUser-0x0

На экран ты по-любому будешь выводить в RGB и если используется не он, то придётся преобразовывать. YUY (или как там его зовут) удобен для систем распознавания образов и т. п.

KivApple ★★★★★
()
Ответ на: комментарий от KivApple

RGB и YUY это всего лишь схемы кодирования цвета пикселей. В любом случае сам кадр - это массив чисел и всё.

KivApple ★★★★★
()

Вообще конечно беда, что в линуксе нет высокоуровневых простых и стандартизированных вещей. Каждый чудик свой лисапед пилит.

LinuxUser-0x0
()
Ответ на: комментарий от LinuxUser-0x0

простых и стандартизированных вещей

Вообще линукс за это и ценим...

высокоуровневых

...но он растёт больше для тех компаний, у кого деньги, поэтому со временем всё больше и больше начинает не хватать обычным программистам.

gag ★★★★★
()
Ответ на: комментарий от LinuxUser-0x0

Каждый чудик свой лисапед пилит.

Ну и какие ещё лисапеды подобные v4l в линуксе существуют?

Kosyak ★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Еще раз цитирую «Вообще конечно беда, что в линуксе нет высокоуровневых простых и стандартизированных вещей. Каждый чудик свой лисапед пилит.» Если V4L2 высокоуровневый интерфейс, тогда я Коля Басков.

LinuxUser-0x0
()

gstreamer - захват картинки из любого видеопотока - 5 строк кода С или одной командой gst-launch.

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

gstreamer - это стандарт? Он популярен, но не является стандартом.

LinuxUser-0x0
()
Ответ на: комментарий от LinuxUser-0x0

Назовите мне высокоуровневую, простую и стандартизированную вещь для доступа к камере.

Назови мне высокоуровневую, простую и стандартизированную вещь для доступа к камере для любой другой ОС.

Kosyak ★★★★
()
Ответ на: комментарий от LinuxUser-0x0

тогда ты точно Коля Басков, потому что велосипед это когда много разных интерфейсов делающих одно и то же, а V4L2 это единственный единый интерфейс, и хоть и довольно низкоуровневый, но тем не менее довольно простой и удобный

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от LinuxUser-0x0

ты просто неосилятор - вот и весь ответ, вот и мечтаешь о «высокоуровневой стандартизированной хрени», в то время как V4L2 это единый стандарт, и много других _высокоуровневых_ оберток и библиотек его используют

но тебе всё мало

ты можешь пояснить, что ты хочешь, если V4L2 и так хорош и у него есть куча надстроек типа VLC ffmpeg gstreamer и так далее

какую задачу ты не можешь решить сейчас без «высокоуровневой стандартизированной» (с)?

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Ты знатный троль, и ник у тебя чтоб потролиить. Читать научись сначала! еще раз - научись читать - высокоуровневый. А v4l2 это единственное что есть для доступа к камере. По крайней мере про другое не слышал.

LinuxUser-0x0
()
Ответ на: комментарий от I-Love-Microsoft

Ты дурак? Где написано что я не могу решить задачу? Я озвучил - нет стандратизированного высокоуровневого доступа к видео. Ты начал херню всякую пороть. Жаль что игноров нет, чтоб твои бредни не читать!

LinuxUser-0x0
()
Ответ на: комментарий от I-Love-Microsoft

Нажал, не увидел кнопки игнорировать... ахвейт, я же из под анонимуса.

anonymous
()
Ответ на: комментарий от LinuxUser-0x0

Если V4L2 высокоуровневый интерфейс, тогда я Коля Басков.

А тебе что надо пяток функций которые делают всё за тебя? типа

OpenVideo(); SaveVideo();

И тому подобное.

А попадется какая нибудь нестандартная камера чего ты с ней делать будешь? Отсутствие жёстких стандартов это больше плюс который позволяет писать программы даже для тех устройств которые по идее вообще пахать не должны. А написать высокоуровневую «оболочку» вообще то не сложно для себя любимого.

Dron ★★★★★
()
Ответ на: комментарий от LinuxUser-0x0

Ты дурак? Где написано что я не могу решить задачу? Я озвучил - нет >стандратизированного высокоуровневого доступа к видео. Ты начал херню всякую >пороть. Жаль что игноров нет, чтоб твои бредни не читать!

/dev/video0

те мало?

Dron ★★★★★
()
Ответ на: комментарий от Kosyak

Назови мне высокоуровневую, простую и стандартизированную вещь для доступа к камере для любой другой ОС.

DirectShow под вендой. А GStreamer - те же яйца, только в профиль. Что, впрочем, воинствующего невежества у аТС не отменяет.

mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.