2015-05-12 2 views
1

Когда я запускаю мой opencv код на raspbian я получаю следующее сообщение об ошибке:Ошибка: QueryFrame не является членом сорта

error: "CaptureFromCAM" is not a member of cv 
error: "SetCaptureProperty" is not a member of cv 
error: "QueryFrame" is not a member of cv 

Может кто-нибудь помочь с правильной нотации, как я использую opencv 3.0. Код работает без ошибок в более низкой версии.

+0

Можете ли вы показать код? – sgarizvi

+0

code is quit longy, поэтому я не могу разместить его здесь. –

ответ

1

Чтобы расширить ответ berak в:

OpenCV C-API является реликтом, что не следует использовать, если вы действительно не должны. Это было в течение долгого времени. По-видимому, по-прежнему существуют способы доступа к старым API C, если вам все еще нужно. См. Комментарий berak на этом посту.

Чтобы захватить видео, вы должны использовать класс cv::VideoCapture в C++ API. Ссылка показывает примеры использования, а также ссылку на класс.

Если у вас старый код, который использует старый C-API, ваши единственные варианты либо остаться на OpenCV 2.x, либо переписать на C++ API.

+0

Я не согласен с тем, что вам следует оставаться со старым C-API. К настоящему времени он должен быть давно мертв;) – Mailerdaimon

+0

Теоретически, да. Могут быть некоторые очень конкретные причины, по которым вы, возможно, не сможете обновить их. У вас может быть действительно старое приложение, с которым вам нужно взаимодействовать, например. Или просто политическое решение использовать C API (по любой причине). Если у вас нет таких причин, то да, следует избегать старого интерфейса. Лично я склонен использовать привязки Python. –

+1

Я 100% согласен с вами в этом, поэтому я добавил «;)». Дело в том, что 90% людей, которые спрашивают о старой апи, используют ее из-за какого-то учебника с древних времен и не знают, что делают. Похоже, что быстрей старый C-Api мог исправить это. – Mailerdaimon

0

устаревший cv python api был удален из opencv3.0, CaptureFromCAM и т. Д. Больше недоступны.

, пожалуйста, используйте CV2 апи OpenCV в питоне:

import numpy as np 
import cv2 

cv2.namedWindow("win") 

camera = cv2.VideoCapture(0) 
while camera.isOpened(): 
    ok, image=camera.read() 
    if not ok: 
     print 'no image read' 
     break 
    cv2.imshow("win", image) 
    k = cv2.waitKey(1) & 0xff 
    if k == 27 : break # esc pressed 
+0

Спасибо, berak, но я не использую python, поэтому можете ли вы предложить замену на C++. –

+0

еще раз, не используйте какие-либо из этих устаревших c-функций, но придерживайтесь C++ api opencv. cv :: VideoCapture, cv :: Mat и т. д. – berak

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