반응형


두 대의 카메라로부터 영상을 가져와서 화면에 뿌려주는 예제입니다. 카메라를 더 추가하려면 같은 방식으로 코드를 작성해주면 됩니다.



카메라 연결시 다음 포스팅도 참고해보세요.


https://webnautes.tistory.com/176




  1. #include "opencv2/opencv.hpp"  
  2.   
  3. using namespace cv;  
  4.   
  5.   
  6. int main(intchar**)  
  7. {  
  8.     VideoCapture cap1(0);   
  9.     VideoCapture cap2(1);    
  10.   
  11.     if (!cap1.isOpened())  
  12.     {  
  13.         printf("첫번째 카메라를 열수 없습니다. \n");  
  14.     }  
  15.   
  16.     if (!cap2.isOpened())  
  17.     {  
  18.         printf("두번째 카메라를 열수 없습니다. \n");  
  19.     }  
  20.   
  21.   
  22.     Mat frame1, frame2;  
  23.   
  24.     namedWindow("camera1", 1);  
  25.     namedWindow("camera2", 1);  
  26.       
  27.   
  28.     for (;;)  
  29.     {  
  30.           
  31.         cap1 >> frame1;   
  32.         cap2 >> frame2;  
  33.   
  34.         imshow("camera1", frame1);  
  35.         imshow("camera2", frame2);  
  36.   
  37.         if ( waitKey(20) == 27 ) break; //ESC키 누르면 종료    
  38.     }  
  39.   
  40.     return 0;  
  41. }  


반응형

포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
개선 사항을 댓글로 남겨주면 가능한 빨리 반영하도록 하겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 ~~

유튜브 구독하기


제가 쓴 책도 한번 검토해보세요 ^^

  1. cyksy 2015.12.22 15:50

    안녕하세요, 블로그 보고 따라하다가 궁금한것이 생겨 질문드립니다.
    현재 4장의 이미지를 처리하는 알고리즘 구현중인데, 인풋을 이미지가 아닌 usb cam에서 가져오려고 합니다.
    문제는 총4대의 카메라중 2대의 카메라만 정상 연결이 되고 3번째 4번째 카메라는 FALSE를 반환합니다.
    VideoCapture가 아닌 cvCaptureFromCAM로도 시도했는데 동일한 현상이 나타납니다.

    장치관리자엔 4대의 카메라가 모두 정상 인식되고 있고 USB뚫는 부분에서 에러는 없습니다.(다만 false가 반환 될뿐...)
    현재 opencv 2.4.11버전을 사용하고 있습니다.

    혹시 짐작가는 원인이 있으신지 알고싶습니다.

  2. Favicon of https://webnautes.tistory.com BlogIcon webnautes 2015.12.22 15:52 신고

    인접한 두개의 usb 포트당 카메라1개씩만 연결해보세요..

  3. 질문이있습니다. 2016.07.22 16:57

    카메라 두대를 출력시켜서 각기 다른 영상을 처리하려고 합니다. 스트리밍으로 출력하는데 문제는 없지만, 각각 연산량이 많아서 느려집니다. 받는 프레임을 줄이거나 다른 방법이 없을까요?

  4. 질문이요 2017.03.14 22:25

    라즈베리파이에서 리눅스에서 웹캠2대 위와같이 똑같이 해도 되나요 ?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.03.14 22:28 신고

      라즈베리파이에서도 웹캠 2대로 테스트하셔야 합니다..

  5. qpq93 2017.03.18 02:41

    카메라로 받는 영상의 크기를 변경하고싶은데 어떤함수를 써야 하나요 ..? ㅜㅜ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.03.18 03:07 신고

      VideoCapture 객체가 cap인 경우.. 아래처럼 하시면됩니다..

      cap.set(CV_CAP_PROP_FRAME_WIDTH, 320);
      cap.set(CV_CAP_PROP_FRAME_HEIGHT, 240)

  6. qpq93 2017.03.18 11:04

    감사합니다! 그런데 너비는 어느정두 고정시키구 높이만 더 늘리고싶은데 높이만 아무리높게해도 너비에 따라 커지는데 한계가있습니다,
    원래 카메라(c170)에 따라 그렇게 되는건가요 ??ㅠㅠ
    아니면 강제로 늘릴수 있는방법이 있나요 ?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.03.18 12:38 신고

      웹캠 드라이버에서 미리 정의해놓은 해상도들만 영상을 캡처할 수 있습니다..

      대부분 웹캠에서 지원하는 640x480 또는 320x240 처럼.. 가로 세로 비율이 정해져있습니다.... 임의로 설정이 안됩니다

  7. qpq93 2017.03.22 00:07

    항상 잘 보고 있습니다! 다름이 아니라 두 개의 카메라로 받은 영상을 각각 출력하는게 아닌 나란히 side by side 형식으로 붙여서 하나로 출력할 수 있는 함수가 있을까요 ...?? ㅠㅠ

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.03.22 05:15 신고

      가로로 나란히 이미지를 붙일려면 hconcat 함수를 사용하시면 됩니다.
      void hconcat(InputArray src1, InputArray src2, OutputArray dst);

      src1, src2가 입력이미지이고 dst가 결과 이미지입니다.

      주의할 점은 입력 이미지들의 높이가 같아야 하며 지키지 않으면 예외가 발생합니다.

  8. qpq93 2017.03.24 01:16

    Opencv로 띄운 영상만을 스마트폰으로 스트리밍하고싶은데 vnc뷰어 말고 다른방법이 없을까요..?? (Vnc뷰어는 딜레이때문에...) c170캠을 사용중인데 이를 ip로 웹으로 띄어서 이를 vlc로 스트리밍을 할 수 있나요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.03.25 03:10 신고

      간단하게 소켓통신으로 캡처된 이미지를 연속적으로 전송해서 스마트폰에서 영상으로 보이게 해도 되고..

      관련 라이브러리를 찾아도 될듯합니다.

  9. opencv 2017.10.12 09:59

    혹시 연결된 2대 카메라 리스트를 출력해서 원하는 카메라를 선택해서 연결하는게 가능할까요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.10.14 00:15 신고

      OpenCV에서 제공하는 카메라의 ID를 읽어와서 구별할 수 있는 방법이 있는지는 확실치 않네요.

      다른 방법으로 연결된 카메라 디바이스의 정보를 확인해야 하지 않을까 싶습니다.

  10. opencv 화이팅 2020.01.16 14:10

    카메라의 해상도를 바꾸고 싶은데 어떻게 하면 되나요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2020.01.16 23:14 신고

      다음처럼 변경할 수 있습니다.

      cap.set(CAP_PROP_FRAME_WIDTH,640);
      cap.set(CAP_PROP_FRAME_HEIGHT,480);

+ Recent posts