OpenCV, как выбрать, к какой камере подключаться? - PullRequest
0 голосов
/ 22 февраля 2019

Я пишу приложение OpenCV 3.4 в Ubuntu 16.04.Однако я сталкиваюсь с проблемой, когда независимо от того, какое устройство я установил в своей функции VideoCapture (), я всегда получаю встроенный поток веб-камеры.Однако мне нужно получить поток с моей камеры USB.Кстати, моя USB-камера - Logitech C920, а мой компьютер - ThinkPad P51 (не уверен, что это будет иметь значение)

Вот мой код:

#include <opencv2/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/aruco.hpp>
#include <iostream>


int main(int, char**){
   cv::Mat inputImage;
   std::vector<int> markerIds;
   std::vector<std::vector<cv::Point2f> > markerCorners, rejectedCandidates;
   cv::aruco::DetectorParameters parameters;

   cv::VideoCapture inputVideo(1); // I have tried 0, 1, 2...20 all the same stream

   cv::Ptr<cv::aruco::Dictionary> dictionary = cv::aruco::getPredefinedDictionary(cv::aruco::DICT_4X4_50);

   while (inputVideo.grab()){
     cv::Mat image, imageCopy;
     inputVideo.retrieve(image);
     image.copyTo(imageCopy);
     std::vector<int> ids;
     std::vector<std::vector<cv::Point2f> > corners;
     cv::aruco::detectMarkers(image, dictionary, corners, ids);

     if (ids.size() > 0) cv::aruco::drawDetectedMarkers(imageCopy, corners, ids);

     cv::imshow("out", imageCopy);
     if(cv::waitKey(30) >= 0) break;

   }
 }

Спасибо!

РЕДАКТИРОВАТЬ:

Это результат, который я получаю с помощью ls -lR / dev / v4l:

/dev/v4l:
total 0
drwxr-xr-x 2 root root 80 Feb 23 10:53 by-id
drwxr-xr-x 2 root root 80 Feb 23 10:53 by-path

/dev/v4l/by-id:
total 0
lrwxrwxrwx 1 root root 12 Feb 23 10:53 usb-046d_HD_Pro_Webcam_C920_25CCF0FF-video-index0 -> ../../video1
lrwxrwxrwx 1 root root 12 Feb 23  2019 usb-8SSC20F27019L1GZ83C07ZY_Integrated_Camera-video-index0 -> ../../video0

/dev/v4l/by-path:
total 0
lrwxrwxrwx 1 root root 12 Feb 23 10:53 pci-0000:00:14.0-usb-0:6:1.0-video-index0 -> ../../video1
lrwxrwxrwx 1 root root 12 Feb 23  2019 pci-0000:00:14.0-usb-0:8:1.0-video-index0 -> ../../video0

И это то, что я получаю с помощью lsusb:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 138a:0097 Validity Sensors, Inc. 
Bus 001 Device 004: ID 04ca:7066 Lite-On Technology Corp. 
Bus 001 Device 008: ID 046d:082d Logitech, Inc. HD Pro Webcam C920
Bus 001 Device 003: ID 046d:c539 Logitech, Inc. 
Bus 001 Device 002: ID 04d9:0169 Holtek Semiconductor, Inc. 
Bus 001 Device 006: ID 8087:0a2b Intel Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Не знаете, как их сопоставить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...