Захват изображений с помощью OpenCV 2.2 и Python в Linux (Fedora 15 Beta)

#python #linux #opencv #webcam #fedora

#python #linux #opencv #Вебкам #fedora

Вопрос:

У меня есть код ниже ;

 import cv
import time

cv.NamedWindow("camera", 1)

capture = cv.CaptureFromCAM(0)

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    if cv.WaitKey(10) == 27:
    break
  

Приведенный выше код является собственным сценарием захвата CAM в OpenCV-2.2 для Python. Итак, я знаю, что с программой все в порядке. И я могу использовать свою камеру с различными приложениями в Linux, такими как программа под названием Cheese. Однако, когда я компилирую эту программу, я получаю сообщение об ошибке, как показано ниже;

 (camera:2519): GStreamer-CRITICAL **: gst_debug_add_log_function: assertion `func != NULL' failed

(gst-plugin-scanner:2521): GStreamer-WARNING **: Failed to load plugin '/usr/lib64/gstreamer-0.10/libgstbcmdec.so': /usr/lib64/gstreamer-0.10/libgstbcmdec.so: undefined symbol: gst_video_format_new_caps
  

Я предполагаю, что с GStreamer что-то не так. Есть ли способ это исправить? Или есть проблема с самим OpenCV-2.2? Или, может быть, что-то не так с примером скрипта?

Спасибо, что уделили мне время.

Ответ №1:

Этот символ должен быть предоставлен пакетом gstreamer-plugins-base.

Проверьте, установлено ли оно у вас. Если он у вас есть, это означает, что ваша версия этого пакета старше, чем требуется OpenCV 2.2. Лучше всего обновить весь GStreamer на вашей платформе, просто чтобы быть уверенным.

Комментарии:

1. У меня были некоторые проблемы с использованием OpenCV и Python в версии 2.1, и я не знаю, исправили ли они это, но это было связано с VideoWriter. Тем не менее, интерфейсы C / C работали великолепно, хотя интерфейс Python немного разочаровал.

2. Оказывается, что мой GStreamer устарел спасибо за вашу помощь.

Ответ №2:

Попробуйте использовать другой индекс камеры

 capture = cv.cvCaptureFromCam(1)
  

или другие более высокие индексы

Комментарии:

1. Я, например, прочитал ссылку на opencv, и этот индекс должен быть равен 0 или -1, ЕСЛИ у вас не подключено более одной камеры.