Я подключил камеру через 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, значит, отсутствуют драйверы именно этой камеры.