OpenCV에서 전체화면(fullscreen)으로 출력하기 위해 highgui.dll 을 수정한 코드입니다. 막강하고 편리한 OpenCV를 이용해서 컴퓨터 비젼(Computer Vision), 영상처리(Image Processing)등을 하여 인터렉티브 아트(Interactive Arts)를 하고자 할 때, 전체화면으로 돌려야 하는 경우가 있는데, 기본적으로 제공되지 않아 다양한 방법을 이용해야 했습니다.
[참고] WinAPI 기반, MFC 기반의 풀스크린 띄우기, http://lifenote.tistory.com/221
하지만 보다 손쉽게 OpenCV Library를 수정해서 풀스크린을 띄우는 방법입니다. highgui.dll 을 수정한 후 다시 컴파일 해야 합니다. 간단하게 쓰고 싶은 분들을 위해 제가 수정해서 쓰고 있는 highgui.dll 와 highgui.lib 파일을 올립니다. 버전은 OpenCV v1.1 pre1 (2009.6.7 현재 최신버전) 을 기반으로 컴파일 하였습니다.
- DLL 파일은 C:\WINDOWS\system32 에 덮어씌우면 됩니다.
- Lib 파일은 C:\Program Files\OpenCV\lib 에 덮어씌우면 됩니다.
o 수정하기
higugui에서 cvNamedWindows()를 관여하는 소스코드는 windows_w32.cpp 파일에 있습니다. 다음과 같은 코드를 추가해 줍니다.
---- windows_w32.cpp ------
…
if(flags==-1)
{
flags=0;
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
ShowWindow(mainhWnd, SW_MAXIMIZE);
style = GetWindowLong(mainhWnd, GWL_STYLE);
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(mainhWnd, GWL_STYLE, style);
SetWindowPos(mainhWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED);
}
…
- cvNamedWindow( "T9-fullscreen", -1)의 결과
- cvNamedWindow( "T9-fullscreen", 1)의 결과
동작여부를 확인해보기 위해 만든 소스코드 입니다. Visual C++ 6.0 에서 작업했습니다.
[소스코드]
---- T9-opencv.cpp ------
#pragma comment(lib, "cv.lib");
#pragma comment(lib, "cxcore.lib");
#pragma comment(lib, "highgui.lib");
[참고] WinAPI 기반, MFC 기반의 풀스크린 띄우기, http://lifenote.tistory.com/221
하지만 보다 손쉽게 OpenCV Library를 수정해서 풀스크린을 띄우는 방법입니다. highgui.dll 을 수정한 후 다시 컴파일 해야 합니다. 간단하게 쓰고 싶은 분들을 위해 제가 수정해서 쓰고 있는 highgui.dll 와 highgui.lib 파일을 올립니다. 버전은 OpenCV v1.1 pre1 (2009.6.7 현재 최신버전) 을 기반으로 컴파일 하였습니다.
- DLL 파일은 C:\WINDOWS\system32 에 덮어씌우면 됩니다.
- Lib 파일은 C:\Program Files\OpenCV\lib 에 덮어씌우면 됩니다.
o 수정하기
higugui에서 cvNamedWindows()를 관여하는 소스코드는 windows_w32.cpp 파일에 있습니다. 다음과 같은 코드를 추가해 줍니다.
---- windows_w32.cpp ------
…
if(flags==-1)
{
flags=0;
int cx = GetSystemMetrics(SM_CXSCREEN);
int cy = GetSystemMetrics(SM_CYSCREEN);
ShowWindow(mainhWnd, SW_MAXIMIZE);
style = GetWindowLong(mainhWnd, GWL_STYLE);
style &= ~(WS_DLGFRAME | WS_THICKFRAME);
SetWindowLong(mainhWnd, GWL_STYLE, style);
SetWindowPos(mainhWnd, HWND_TOPMOST, -1, -1, cx+3, cy+3, SWP_FRAMECHANGED);
}
…
- cvNamedWindow( "T9-fullscreen", -1)의 결과
- cvNamedWindow( "T9-fullscreen", 1)의 결과
동작여부를 확인해보기 위해 만든 소스코드 입니다. Visual C++ 6.0 에서 작업했습니다.
[소스코드]
---- T9-opencv.cpp ------
#pragma comment(lib, "cv.lib");
#pragma comment(lib, "cxcore.lib");
#pragma comment(lib, "highgui.lib");
#include <cv.h>
#include <highgui.h>
void main()
{
IplImage* image = 0;
image = cvLoadImage("t9t9.jpg");
cvNamedWindow( "T9-fullscreen", -1); // 전체 화면으로 띄우기 위한 코드
cvShowImage( "T9-fullscreen", image );
cvWaitKey(0);
cvDestroyWindow( "T9-fullscreen" );
}
'CLASS' 카테고리의 다른 글
[iOS] iPhone, iPad (iOS 4.2)의 AirPlay 기능 동영상으로 보기 (1) | 2010.11.24 |
---|---|
[openFrameworks] Hello 오픈프레임웍스 기초강의 (7) | 2009.08.13 |
[WPF] WPF개발, 10여줄로 구현하는 드로잉 프로그램 (0) | 2008.12.24 |
[HCI] HCI 를 공부하기 위한 책들 (3) | 2007.05.22 |
[HCI] HCI(Human Computer Interaction)의 정의 ACM/SIGCHI 1992 (0) | 2007.04.26 |