본문 바로가기

CLASS

[OpenCV] OpenCV에서 전체화면(Fullscreen) 출력하기 소스코드

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 에 덮어씌우면 됩니다.
 

highgui110.dll

highgui.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 에서 작업했습니다.

[소스코드]

OpenCV_fullscreen_viewer.zip

OpenCV_cam_fullscreen.zip


---- 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" );
}