2013-02-13 2 views
0

opencv를 사용하여 비디오를 읽고 표시하고 싶습니다. Direct-show로 녹화했는데, 비디오에 UYVY (4 : 2 : 2) 코덱이 있습니다. opencv에서 해당 형식을 읽을 수 없기 때문에 코덱을 RGB 색상 모델로 변환하고 ffmpeg에 대해 읽었습니다. 이 문제를 해결할 수 있는지 알고 싶습니까? 만약에 당신이 제안한다면 나는 감사 할 것입니다.UYVY FFmpeg 변환

+0

'UYVY'는 [인기있는] 픽셀 형식 중 하나입니다. DirectShow API를 사용하여 모든 표준 방법을 사용하여이 파일을 읽을 수 있습니다. RGB 로의 변환은 Windows에 내장되어 있습니다. 왜 당신이 만든 파일을 사용할 수 없는지를 말하기 어렵습니다. –

+0

읽을 줄 알아요.하지만 변환 방법을 모르겠습니다. ' – Engine

+0

RBB **, 들어 본 적이 없습니까? – karlphillip

답변

1

I explained to you before으로 OpenCV는 UYVY (FFmpeg/GStreamer 덕분)을 포함하여 YUV의 일부 형식을 읽을 수 있습니다. 그래서 당신이 카메라에서 얻은 cv::Mat이 이미 OpenCV가 기본적으로 사용하는 BGR 색 공간으로 변환되었다고 생각합니다.

나는 PNG로 비디오의 첫 번째 프레임을 저장하기 위해 내 previous program 수정 :

cv::Mat frame; 
if (!cap.read(frame)) 
{ 
    return -1; 
}    

cv::imwrite("mat.png", frame); 

for(;;) 
{ 
// ... 

을 그리고 이미지가 완벽합니다. mat.png에서 명령 file을 실행하면 알 수 :

mat.png: PNG image data, 1920 x 1080, 8-bit/color RGB, non-interlaced 

더 정확한 테스트는 디스크에 전체 frame.data() 덤프 및 이미지 편집기를 열 수있을 것이다. 그렇게하면 R 및 B 채널이 전환된다는 것을 명심하십시오.