아.. openCV를 쓰다가.. openCV 캠입력은 윈도우나 하드웨어나 여러가지 특성때문에 가끔 화면 출력이 안되는 경우가 있다.
(화면이 완전 회색이거나 완전 검정)
그래서 검색을 하고, 하고 또 하다가.. 웹캠을 DirectShow로 출력하라는 글을 보았다.
그때 부터 바로 서치를 시작했지만.. 필터니, 그래프니.. 이건.. 생전 처음 듣던 용어 들이였다. 물론 좀 더 공부를 해 나가다 보면 익숙해 지겠지만.. 일단은 지금 시간이 없는지라 계속 검색을 하던 중.. 한 클래스를 발견했다. ( 역시 구글~)
클래스 작성자가 공개를 해 놓은 것이라.. 써도 될 것 같아서.. 일단 가져와서 쓰고 여기다가도 공유를 해 놓는다.
( 문제가 생긴다면 답글을 달아주시면 바로 삭제하겠습니다. )
일단 저 클래스를 추가를 하고, main.cpp를 만든 다음에 아래의 예제를 붙이면 된다.
#include <cstdio>
#include "VideoCapture.h"
#define TEST(x) printf("\nPress enter to test: " #x); getchar(); fflush(stdin); x;
void callback(unsigned char* data, int len, int bpp)
{
printf("DATA %d %d\n",len, bpp);
}
int main()
{
VideoCapture* vc = new VideoCapture(callback);
VideoDevice* devices = vc->GetDevices();
int num_devices = vc->NumDevices();
for (int i=0; i<num_devices; i++)
{
printf("%s\n", devices[i].GetFriendlyName());
}
TEST(vc->Select(devices));
TEST(vc->Start());
//TEST(vc->Select(devices));
//TEST(vc->Stop());
//TEST(vc->Start());
//TEST(vc->Stop());
printf("Done testing...");
getchar();
return 0;
}
ps. 물론 dshow가 설치된 경로를 프로젝트에 속성에서 추가를 해주어야 정상적으로 동작을 할 것이다.
또 dshow가 컴파일을 하며 내부 .h 에 의한 에러가 난다면 유용한 팁의 다른 글을 참조 하시면 쉽게 해결 될 것이다.
'프로그래밍 > 유용한 팁' 카테고리의 다른 글
bool 변수 = 변수 ? false : true ; (0) | 2011.08.03 |
---|---|
WM_KEYDOWN 과 WM_CHAR 의 차이 (0) | 2011.08.02 |
2010부터 폴더 추가가 바뀌었다!! (0) | 2011.08.01 |
dsShow dxtrans.h 에러 (2) | 2011.08.01 |
VS 2008 이상 버전 릴리즈 재배포 (0) | 2011.08.01 |