반응형
OpenCV 를 이용해 MFC 컨트롤(Static Control) 이미지 표현 하기 |
개발환경 : window 7 32bit, Visual Studio 2010 |
(1) 이미지 로딩과 소멸 |
다이얼 로그 프로젝트를 만든다. 그리고 Static Control 를 하나
추가하고 이미지를 출력하기 위한 실행 버튼을 만들자.
Dialog 헤더파일에 이미지표현을 위한 객체를 선언한다.
IplImage* m_pImage; CvvImage m_cImage;
OPEN 버튼 클릭시 실행할 내용이다.
m_pImage 객체가 NULL 이 아니라면 cvReleaseImage 로 소멸시킨다.
다음은 cvLoadImage 로 원하는 이미지 파일을 로딩하고 그 리턴값을
m_pImage 에 저장한다.
그리고 Static 영역을 새로 그리기위해 InvalidateRect 를 호출한다.
그러면 OnPaint 함수가 호출 될것이다. 여기에 리턴 받은 m_pImage
를 그려 넣으면 된다void COpenCVSampleDlg::OnBnClickedBtnOpen() { if (m_pImage != NULL) { cvReleaseImage(&m_pImage); } m_pImage = cvLoadImage("test.jpg", -1); Invalidate(FALSE); }
다음은 다이얼로그가 종료 되었을 때 m_pImage 객체를 소멸시키는
코드를 입력하자.
BOOL COpenCVSampleDlg::DestroyWindow() { if (m_pImage != NULL) { cvReleaseImage(&m_pImage); } return CDialogEx::DestroyWindow(); }
(2) 이미지 표현 |
이제 실제적으로 그리는 부분인 OnPaint 함수에 대한 내용이다.
Static 의 CDC와 범위를 얻고 CvvImage::CopyOf, CvvImage::DrawToHDC
두 함수를 이용해 지정한 영역에 그려넣는 내용이다.
리턴받은 CDC 는 ReleaseDC 를 통해 소멸시켜 준다.
if (m_pImage) { CRect rt; CDC *pStaticDC = GetDlgItem(IDC_STATIC_VIEW)->GetDC(); GetDlgItem(IDC_STATIC_VIEW)->GetClientRect(&rt); m_cImage.CopyOf(m_pImage); m_cImage.DrawToHDC(pStaticDC->m_hDC, &rt); ReleaseDC(pStaticDC); }
아래 그림은 위의 소스를 통해 표현한 장면이다.
반응형
'기타 언어 > C# & MFC' 카테고리의 다른 글
Visual C# Form 에 WebBrowser 클래스 이용해 웹브라우저 만들기 (1부) (0) | 2014.09.25 |
---|---|
개발도구인 C++ 빌더가 window 7 에서 실행되지 않을 때 (0) | 2013.05.23 |
MFC 에서 도형, 이미지등의 그림을 그릴 때 원하는 영역에만 표시하고자 할 때 (0) | 2013.05.14 |
MFC 에서 OpenCV 의 cvGetQuadrangleSubPix 를 이용한 이미지 회전 (3) | 2013.05.02 |
OpenCV 에서 IplImage 구조체 데이터 초기화 하기 (0) | 2013.04.29 |
Visual C++ 2010 fatal error LNK1123: failure during conversion to COFF 에러발생시 (8) | 2013.04.26 |
OpenCV2.4 에서 raw 파일 로딩하기 (0) | 2013.04.18 |
MFC 콘솔(Cmd) 에 로그 출력하기 (0) | 2013.04.13 |