2014-12-10 4 views
1

내 프로젝트에서 객체 인식을 위해 새로운 Logitech 카메라 c920을 사용하고 있습니다.
내 카메라는 H264 코덱을 지원할 수 있으며 H264 HD 출력을 표시 할 수 있습니다.
하지만 OpenCV 명령어를 사용하여 H264 디코드 스트림 을 넣으려면 아래 코드에서 H264로 코덱 유형을 설정할 수 있습니다. REF :H264 코덱을 사용한 OpenCV VideoCapture

나는 논리 아래 사용하여 비디오를 캡처하고 this link

#include "opencv2/opencv.hpp" 

using namespace cv; 

int main(int, char**) 
{ 
    VideoCapture cap(0); // open the default camera 
    if(!cap.isOpened()) // check if we succeeded 
     return -1; 

    for(;;) 
    { 
     Mat frame; 
     cap >> frame; // get a new frame from camera 
     imshow("display", frame); 
     if(waitKey(30) >= 0) break; 
    } 
    // the camera will be deinitialized automatically in VideoCapture destructor 
    return 0; 
} 
+0

당신은 메모리로 인코딩하거나 FOURCC 코드로'VideoWriter' 클래스를 생성하기 위해'imencode'를 사용할 수 있습니다. 그러나 많은 미리 컴파일 된 openCV 배포판은 내가 아는 한 H.264 인코딩을 지원하지 않으므로 x264 라이브러리가 활성화 된 상태에서 스스로 컴파일해야 할 수도 있습니다. – Micka

+0

아 ... 질문을 다시 읽으십시오. 나는'cap >> frame'이 이미 DECODED 이미지를 전달하고 있다고 확신합니다. 인코딩하거나 인코딩 된 스트림을 카메라에서 직접 가져 오시겠습니까? 나는 openCV 함수로 가능하다고 생각하지 않는다. 카메라 드라이버가 피팅 메소드를 제공 할까? – Micka

+0

재생을위한 Micka에게 감사드립니다. cap >> 프레임이 FFMPEG 코덱을 사용하여 내부적으로 디코딩되었으므로 같은 사실을 알게되었습니다. 다른 코덱을 명시 적으로 사용할 필요가 없습니다. Logitech 카메라에서 원시 데이터를 캡처하는 방법을 알고 있습니까? 정상적인 비트 스트림 안에 저장되어 ?? – Ashwin

답변

1

FOURCC 속성을 설정하면이 소스는 H.264입니다 VideoCapture을 이야기해야한다. openCV의 모든 문서는 디코딩 된 BGR 데이터를 가져올 것이라고 말합니다.

cap.set(CV_CAP_PROP_FOURCC, CV_FOURCC('H', '2', '6', '4'));