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 |
[OpenCV] OpenCV에서 전체화면(Fullscreen) 출력하기 소스코드 (9) | 2009.06.07 |
[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 |
감사합니다 ㅋ 잼있게 써 먹을수 있겟네염
좋은 작품 만드시면 알려주세요~ ^^
비밀댓글입니다
와우!
적절한 타이밍에 적절한 예제.
잘쓰겠습니다.
유용하게 사용해주세요~ 작품만드시는 건가요? 만드시면 꼭 보여주세요~
와우 감사!!
덕분에 10분만에 해결
작품만드는 건 아니지만.
담에 작품 만들때도 유용하겠는데여 으흐흐.
유용하게 쓰신다니 기분이 좋네요~
작품 만드시면 꼭 소개해주세요~ ^^
windows_w32.cpp에 코드를 정확히 어디에 추가시켜줘야 하나요???
))
제공해 주신 dll 파일을 치환해서 이용하니 이상하게 잘되던 프로그램이 cvCloneImage 관련 에러가
나면서 되질 않네요.. 그래서 직접 다시 컴파일하고 싶은데..
windows_w32.cpp의 cvNamedWinows 함수의 어디에 추가해도 style이 선언되지 않은 변수라고 뜨면서
컴파일이 안됩니다. 답변 부탁드립니다!
안녕하세요 opencv를 공부하고 있는 학생입니다.
opencv를 공부하면서 어려운 점이 생겨 질문을 드립니다.
캠의 영상을 입력받아 화면에 띄우고 사진도 그 화면에 동시에 띄우는 단계까지 완성을 시켰는데
문제는 그 사진을 투명도까지 나타내기위해서 png파일로 저장을 하였습니다.
하지만 opencv를 이용하여 화면에 나타난 사진을 보니 투명도는 나타나지 않더군요 -_-;
지금 opencv를 공부하는 초보이기 때문에 많은 어려움을 겪고있습니다.
제생각에는 cvLoadImage(cvGetSize(),___)에서 2번째 인자에 -1을 입력하면
파일속성을 그대로 입력받기 때문에 될까 싶어서 해보았지만 무용지물이더라구요..
이 문제를 어떻게 해결해야하는지 도움을 얻고자 합니다 ...
꼭 답변 부탁드립니다...ㅠㅠ