OpenCV를 공부하면서 부터 캠을 하나 사야지 사야지 벼르고 있었는데,
들로네 님의 추천(웹캠으로 주행중 차량 번호판을 추출한다)으로 좋은 캠을 하나 알게된 차에
증강현실(AR)을 이용한 마술을 보고 너무너무 따라해 보고 싶은 마음에,
과감하게 캠을 하나 질렀다.
이 캠이 앞으로의 연구들에 큰 역할을 하기를!!
1. 웹캠에서 영상을 입력받기 위한 변수 선언
2. 웹캠 연결 및 타이머 설정
- 일반적으로 캠 영상의 입력은 콜백함수를 이용하지만, 예제에서는 간단히 타이머를 이용하여 프로그램한다.
- OnInitDialog() 함수에서 웹캠에 연결을 시도하고, 타이머를 설정한다.
3. 타이머 정의
- CWebCamDlg 클래스의 속성에서 OnTimer를 추가하고, 매 호출시 마다 캠에서 프레임을 가져온다.
- DestroyWindow()에서 캠 연결을 종료한다.
4. 캠 입력 프로그램 동작 확인
- 짜자잔~ 간단하게 프로그램 완성!
들로네 님의 추천(웹캠으로 주행중 차량 번호판을 추출한다)으로 좋은 캠을 하나 알게된 차에
증강현실(AR)을 이용한 마술을 보고 너무너무 따라해 보고 싶은 마음에,
과감하게 캠을 하나 질렀다.
이 캠이 앞으로의 연구들에 큰 역할을 하기를!!
Genius Slim 1320, 25000원
OpenCV 설정 및 MFC 프로그램 기본에 대한 사항은 이전 글을 참고할 것
강좌 01. MFC로 OpenCV 시작하기
강좌 02. 다이얼로그(Static Control)에 이미지 출력하기
강좌 01. MFC로 OpenCV 시작하기
강좌 02. 다이얼로그(Static Control)에 이미지 출력하기
1. 웹캠에서 영상을 입력받기 위한 변수 선언
2. 웹캠 연결 및 타이머 설정
- 일반적으로 캠 영상의 입력은 콜백함수를 이용하지만, 예제에서는 간단히 타이머를 이용하여 프로그램한다.
- OnInitDialog() 함수에서 웹캠에 연결을 시도하고, 타이머를 설정한다.
3. 타이머 정의
- CWebCamDlg 클래스의 속성에서 OnTimer를 추가하고, 매 호출시 마다 캠에서 프레임을 가져온다.
- DestroyWindow()에서 캠 연결을 종료한다.
4. 캠 입력 프로그램 동작 확인
- 짜자잔~ 간단하게 프로그램 완성!
'[ 프로그래밍 ] > 강좌' 카테고리의 다른 글
| OpenCV 강좌 05. 레이블링(Blob Labeling) (23) | 2009/07/01 |
|---|---|
| OpenCV 강좌 04. 영상 이진화 하기 (10) | 2009/06/30 |
| OpenCV 강좌 03. 다이얼로그에 캠 영상 입력받기 (18) | 2009/06/25 |
| OpenCV 강좌 02. 다이얼로그(Static Control)에 이미지 출력하기 (49) | 2009/06/25 |
| OpenCV 강좌 01. MFC로 OpenCV 시작하기 (이미지 열기) (14) | 2009/06/25 |
| cvWarpPerspective() 사용 방법 (8) | 2009/03/11 |

03 WebCam.zip
댓글을 달아 주세요
요즘 opencv에 삘~ 받으셨나 보네요~ ㅋ 나도 요거 좀 써볼까나...
응. 재미있게 잘 쓰고 있지.
필요한 요소들 끌어 쓰기에 도움되는 것들이 제법 있더라고.
다양한 분야 공부도 되고 말이야.
이 캠으로 증강현실 마커 인식 해봤는데 처음에는 무척 불안하드라고요 .... 근데 카메라 칼리브레이션 한후에는 상당히 만족스러웠습니다 ^^ 이캠이 리얼 130만인데 요새 새로나온게 200만화소짜리가 있네요 ㅠ.ㅠ
앗! 정말 좋은 정보네요.
칼리브레이션. 해보고 안되면 꼭! 물어볼게요.
마틴님꺼 보면서 열심히 공부하고 있는학생입니다.
여쭤 보고 싶은게 있어서 그러는데요
처음에 입력받은 영상을 이진화하면 새창으로 뜨는데
윈도우폼에 다이얼로그를 하나 더만들어서 새창으로 뜨지않게 하고싶은데
어떻게 해야하는지 힌트좀 주세요 ㅠㅠ
전혀 감을 못잡고 있습니다 ㅠ
STATIC CONTROL을 하나 더 만드신 후에,
OnPaint에서 그곳에 이진화 관련 영상을 출력해 줄 수 있도록 하시면 좋을 것 같습니다.
http://martinblog.tistory.com/822 를 보시면 기본적인 내용이 나와 있으니 참고하세요.
감사합니다 마틴님
위 답글을 보고 STATIC CONTROL (m_stDisplay2) 을 하나 더만들고
OnPaint() 이곳에 아래 코드를 추가했습니다.
컴파일에러는 없는데, 새로만든 컨트롤에 출력이 안되네요.
m_cImage2.CopyOf(gray); 에서 gray 대신 m_pImage를 넣으면
메인영상은 두곳(m_stDisplay, m_stDisplay2) 에서 잘 출력이되네요.
void CWebCamDlg::OnPaint(){
...신
if(m_bBinarize)
{
CDC* pDC2;
CRect rect2;
pDC2 = m_stDisplay2.GetDC();
m_stDisplay2.GetClientRect(&rect2);
m_cImage2.CopyOf(gray); // gray 를 public으로 했음.
m_cImage2.DrawToHDC(pDC2->m_hDC, rect2);
ReleaseDC(pDC2);
}
...
}
안녕하세요!
마틴님 강좌보면서 열심히 공부하고 있습니다!
그런데 다이얼로그에 캠 영상을 입력받고 싶은데, 검정색만 뜨네요 ㅠ
이런경우는 왜 그런건가요.
제 캠이 다른 프로그램에선 잘 돌아가는 것 같은데, 오픈씨브이만 하면 말썽이네요 ㅠㅠ도와주세요 ㅠㅠ
웹캠이 입력을 받다가 멈추는데 리프레시가 제대로 안되는 것 같은데 해결방안없을까요?
마틴입니다.
여러가지 원인으로 프로그램이 잘 안돌아가는 경우가 있을 수 있습니다.
모든 문제를 파악하지 못해 일일이 답변을 못드리는 점 유감스럽게 생각합니다.
조금 더 자세한 내용에 대해서 말씀해 주시면
아는 한도 내에서 최대한 도움 드릴 수 있도록 하겠습니다.
마틴님 질문이 있는데요
대화상자 기반에서
IplImage * 변수 의 cvrelease를 어디서 해줘야 할지를 잘 모르겠습니다.
ontimer에 해줘도 에러가 나고
onpaint에 해줘도 에러가 납니다.
소스는 현재 마틴님 처음꺼부터 참고해서 현재 열기연산까지 한 상태인데
총 창은 다이얼로그 하나에 static display 3개를 이용하여 영상 세개를 띄워놓은 상태입니다.
거의 초당 5000kb씩 메모리 누수가 발생해서요.
DestroyWindow() 에서 하시면 됩니다
3. 타이머 정의 에서 속성부분 WM_TIMER 설정할 수가 없네요
프로젝트 만들 때 잘못 만들어서 그런가요? 전 강좌 #1-2를 참고해서 만들었습니다;;
제가 잘못 만든건가요?
마틴님 혹시 2.0 써보셨어요 ???
2.0은 지금 마틴님이 쓰신 카메라 입력은 안되더라구요
이거 말고 다른건 되는데 이게 되야 마틴님이 하신 동영상 마커 해볼 수 있거든요
어떤말로는 cvcam 기능이 2.0에서 없어졌다고도 하던거 같은데 답변 부탁드릴게요 ^^
제가 사용한 버전은 1.1pre였고요,
2.0에서도 별 무리없이 돌아갑니다.
아마도 다른 부분에서 문제가 있는 것이 아닐까 생각됩니다.
확인 부탁 드릴게요.
마틴님의 강의 잘보고 있습니다. 제가 어느 교육센터에서 수업을 듣고 있는데 곧 있으면 프로젝트를 하나 만들어야 해서 관심있는 분야를 찾고 찾다가 OpenCV를 접하게 되고 여기까지 오게 되었네요..ㅎㅎ 얼른 열심히 해서 손인식 마우스 제어를 하고 싶은데 아직 막막하네요.. 그래도 열심히 하면 언젠간 답이 나오겟져..ㅎㅎ 마틴님의 강의 계속 쭉~~ 열심히 보겠습니다~!
에러 워닝은 없는데
실행하면 카메라를 못받네요..'
if( m_pImage )
{
MessageBox("1");
// 메인 이미지
CDC* pDC;
CRect rect;
요기로 못들어가네요.. 다른것들도 뺴먹은게 업는거 같은데...
한 다이얼로그에 여러개의 영상을 띄울려면 어떻게 해야 하나요? 관련서적을 알수 있을까요?