본문 바로가기
Programming Language/OpenCV

[OpenCV] PC 캠(cam) 해상도 설정

by 민트초코맛꼬깔콘 2010. 10. 18.

프로젝트중 캠에서 영상을 받아와 이미지프로세싱을 하여야 하는데,

윈도우XP에서 코딩하다가 윈도우7으로 환경이 변했는데 멀쩡하던 영상이 갑자기 줄여지지가 않았다

XP에서 기본 세팅인 680x480에서 320x240 영상으로 변환하여 사용중이다가 윈7으로 바꾸고나니

아무리 방법을 써봐도 680x480에서 영상이 줄여지지가 않았다.

picture image만 조금 다뤄보다가 영상이미지를 다루려니까 기초지식도 없는판에 검색해도 무슨내용인지도 잘모르겠고..

주말 2틀을 반납하여 삽질만 하다가... 포기하기 직전에 나한테 맞는 방법을 찾았다.. 

아직 좀더 확실히 테스트는 안해봤지만 너무 기쁜나머지 일단 포스팅...


OpenCV구버전 cvcamSetProperty 와 VidFormat 구조체 를 이용하면 간단히 해결.

1.1(pre1a) 버전에서는 cvcam 라이브러리가 없어지고 HighGUI 로 통합되었으며 함수명이 다릅니다. 저처럼 1.1 버전을 사용하시는 분들은 아래와 같은 방법으로 코딩하시면 됩니다.

CvCapture *capture = cvCaptureFromCAM(0);
  
if( capture )
{
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, [가로크기]);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, [세로크기]);
}

※ 기억이 가물가물한데 읽어봤던 문서에 의하면 해당 함수는 리사이징해주는 개념이며
    실제 물리적으로 캡쳐되는 해상도는 시스템 기본값을 따른다 합니다.

    (이 문제도 다른 방법으로 해결할 수도 있지만 복잡하므로 생략하겠습니다 ~_~)