Я подключил камеру через FireWire и попытался получить к ней доступ с помощью opencv. Камера обнаружена в кориандре и может получить видеопоток. Ниже приведен код, который я использовал
#include "/home/iiith/opencv-2.4.9/include/opencv/cv.h"
#include "/home/iiith/opencv-2.4.9/include/opencv/highgui.h"
#include "cxcore.h"
#include <iostream>
using namespace cv;
using namespace std;
int main(int,char**)
{
VideoCapture cap(0);
if(!cap.isOpened())
cout<<"Camera not detected"<<endl;
while(1)
{
Mat frame;
namedWindow("display",1);
cap >> frame;
imshow("display",frame);
waitKey(0);
}
}
Когда я запускаю этот код, видео транслируется с веб-камеры вместо моей камеры FireWire. Я попробовал тот же код в моей системе друзей, и там была обнаружена камера FireWire. Я тестировал настройки с помощью различных команд, таких как testlibraw, lsmod, и они все одинаковы. Даже версия Opencv, 2.4.9, Ubuntu 12.04 все одинаковы. Это действительно странно, и я на это на 2 дня. Может кто-нибудь, пожалуйста, скажите мне, какая разница? Как получить внешнюю камеру, обнаруженную в opencv? Заранее спасибо.
Примечание. Имеет ли это что-то иметь с настройкой камеры по умолчанию? Благодарю.
Обновление 1: Крышка VideoCapture (1) дает следующую ошибку: HIGHGUI ERROR: V4L: индекс 1 неверен!
Означает ли это, что камера не распознается?
Во-первых, вы должны быть уверены, что камера распознана
Возможная проблема может заключаться в том, что камера, подключенная через FireWire, не распознается системой.
Сначала попробуйте увидеть выход камеры с помощью AMcap или другого программного обеспечения для веб-камеры и проверьте, можете ли вы это увидеть.
Если вы не видите видео в amcap, это означает, что драйверы этой конкретной камеры отсутствуют.
VideoCapture cap(0);
означает камеру по умолчанию,VideoCapture cap(1);
должна быть другая камера, это работа?