본문 바로가기

Programming Tips

Microsoft Platform SDK 설치 및 세팅 Microsoft사의 최신 Platform SDK이다. 뭐...이런 저런 용도로 많이 쓰이겠지만 이번에 GDI+를 쓸 일이 생겨서 설치를 했다...ㅋ 기본경로로 설치를 하게 되면 아래와 같은 경로를 가지게 될 것이다. 비주얼 스튜디오에 세팅을 할 때 착오없으시길....ㅎㅎ "C:\Program Files\Microsoft Platform SDK" 비주얼 스튜디오에 세팅은 Tools->Option메뉴로 들어가서 Show directories for 부분에 include files에서는 아래 그림과 같이 Show directories for 부분에 Library files에서는 아래 그림과 같이 해주면 된다. 더보기
camera calibration과 관련된 사이트 모음 http://research.graphicon.ru/calibration/index.php http://www.kwon3d.com/theory/calib.html http://www.ais.fraunhofer.de/ARC/3D/download/robotik2004/node7.html http://www.ieeta.pt/~pdias/Camera%20Calibration/Camera%20Calibration.htm http://www5.informatik.uni-erlangen.de/Lehre/SS05/ip-v/Ubung_1_Calibration.pdf http://vca.ele.tue.nl/publications/data/Farin2005d_slides.pdf http://www.mdh.se/iel/kur.. 더보기
.NET FrameWork와 C# .NET FrameWork는 Microsoft에서 만들어낸, 응용 프로그램 개발을 위한 새롭고도 혁신적인 플랫폼이며 유비쿼터스에 대응하기 위한 Microsoft의 차세대 전략이라고 볼 수 있다. 유비쿼터스란 1988년 제록스사에서 근무하던 마크 와이저가 ‘유비쿼터스 컴퓨팅’이라는 개념을 제시하면서 알려지게 되었다. 유비쿼터스라는 말은 ‘언제 어디서나 존재한다‘라는 뜻의 라틴어로써 유비쿼터스, 유비쿼터스 컴퓨팅 모두 같은 의미를 지니고 있다고 봐도 무관하다. 유비쿼터스의 의미는 언제 어디서나 어떤 장치를 이용해서라도 온라인 네트워크 상에 있으면서 서비스를 받을 수 있고 모든 장치가 네트워크를 통해 연결되어 데이터를 주고 받는 환경 또는 공간을 뜻한다. 이미 우리 사회는 유비쿼터스의 초기 단계에 진입했다고 .. 더보기
OpenCV를 이용한 카메라 Calibration ToolBox zhengyou zhang의 방법을 기반으로 한 Calibration ToolBox입니다. 체스보드의 가로, 세로 크기와 체스보드 사각형의 한 변의 길이를 입력하고 여러 각도에서 찍은 체스보드의 이미지를 넣어주면 camera matrix와 focal lengh 등을 계산하고 카메라 렌즈의 왜곡을 보정한 이미지를 출력해줍니다. 소스도 포함되어 있습니다. OpenCV공부하는데 좀 도움이 될려나... 저는 4*3에 한 변이 6cm인 체스보드를 160*120 사이즈 영상으로 찍어서 테스트를 해봤는데 잘 되더군요... 심심하신 분들 해보시든지... 설치할려면 닷넷 프레임워크 1.1이 필요합니다. 용량제한 때문에 올리지를 못하네요...ㅎㅎ 더보기
다이얼로그의 배경색 바꾸기 다이얼로그 기반으로 프로그램을 하다보면 회색의 우중충한 다이얼로그 색 때문에 내 기분까지 우울해진다... 사실 그렇지는 않지만 언젠가 필요할 다이얼로그의 배경색을 바꾸는 법은 다음과 같이 OnEraseBkgnd() 함수의 재정의를 통해서 가능하다. BOOL XXXXXXX::OnEraseBkgnd(CDC* pDC) { CRect winRC; GetClientRect(winRC); CBrush bkBrush(RGB(0, 0, 100)); CBrush* pOldBrush = pDC->SelectObject(&bkBrush); pDC->Rectangle(winRC); pDC->SelectObject(pOldBrush); return TRUE; } OnEraseBkgnd()가 Class Wizard의 Messag.. 더보기
타이틀바가 없는 다이얼로그의 이동 타이틀바가 없는 다이얼로그 또는 타이틀바가 아니라 다른 부분을 클릭해도 다이얼로그의 이동이 가능하게 해야 할 경우 다음과 같이 OnLButtonDown() 내에서 PostMessage를 이용하여 다음과 같은 메시지를 발생시키면 이동이 가능하다. PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); WM_NCLBUTTONDOWN은 wParam으로 주어진 곳의 클라이언트을 클릭했다고 하더라도 클라이언트 영역이 아닌 곳을 클릭한 것과 같은 효과를 주며 wParam이 HTCAPTION이므로 클라이언트 영역을 클릭했어도 타이틀바를 클릭한 것과 같은 효과를 주는 것이다. wParam으로 가능한 여러가지 값들은 다음과 같다. HTTOP : 크.. 더보기
다이얼로그 기반 프로그램에서 실행과 동시에 다이얼로그 감추기 다이얼로그를 domodal로 띄울 때 실행과 동시에 다이얼로그를 트레이로 내리거나 감추어야 할 경우 일반적으로 사용하는 방법으로 윈도우를 보이지 않게 하려면 ShowWindow(FALSE); 와 같이 하면 되지만 다이얼로그 기반의 프로그램에서는 DoModal 함수가 내부적으로 WM_SHOWWINDOW 메시지를 사용하여 윈도우를 띄워버리기 때문에 OnInitalDialog나 OnCreate 처리기에서 인위적으로 ShowWindow(SW_HIDE); 라고 코딩을 해놓아도 해당 작업이 무시되어 버린다. 이러한 문제가 발생하는 이유는 DoModal 함수가 내부적으로 메시지 루프를 형성하기 직전에 SendMessage를 이용하여 대화상자를 출력시키는 방법을 사용하기 때문이다. SendMessage를 보낸 쪽은 받.. 더보기
Dialog의 class name 강제로 바꿔서 사용하기 MFC를 이용해 여러 개의 다이얼로그를 가지는 프로그램을 만들 때 한쪽 다이얼로그에서 다른 어떤 다이얼로그로 메세지를 날려줘야할 상황이 생기면 유용한 팁입니다. 특히나 메세지를 받는 쪽 다이얼로그가 캡션이 없는 다이얼로그고 클래스 네임을 이용해서 핸들을 얻어야 할 때 말이죠. SendMessage를 이용해서 특정 다이얼로그로 이벤트를 날릴려면 먼저 FindWindow함수를 이용해서 받는 쪽 다이얼로그의 핸들을 얻어와야겠죠. FindWindow( LPCTSTR lpszClassName, LPCTSTR lpszWindowName ); FindWindow함수의 원형은 위와 같습니다. 앞 쪽의 인자가 클래스 네임이 되고, 뒤 쪽의 인자가 윈도우의 캡션입니다. 하지만 위에서 말씀드렸다시피 다이얼로그의 캡션이 없기.. 더보기
IplImage 구조체 OpenCV에서는 이미지를 다룰때 intel® Image Processing Library에 정의되어있는 IplImage구조체를 이용한다. 구조체는 다음과 같으며 자세한 사항은 OpenCV Library 를 설치한 후 생기는 Document를 참고하시기 바란다. typedef struct _IplImage { int nSize; //구조체의 크기 int ID; //이미지헤더의 버전 int nChannels; //채널의 개수 1~4까지 이용가능 int alphaChannel; //알파채널의 개수 OpenCV에서는 무시 ㅡㅡ; int depth; //픽셀을 표현하는 자료형 ex)IPL_DEPTH_8U char colorModel[4]; char channelSeq[4]; int dataOrder; int o.. 더보기
Microsoft HTML Help WorkShop 4.74 Microsoft HTML Help WorkShop 4.74 HTML 페이지들을 묶어서 chm 도움말 파일을 만들 수 있게 해주는 툴이다. 기본적으로 Visual Studio 6.0을 설치하면 사용이 가능하지만 그 녀석보다는 버전이 높다. HTML Help WorkShop이 사용이 어려워 다른 툴을 쓴다는 사람이 많이 있던데 난 이게 젤 쉽고 간단하던데...역시...난... 담배행성 13호에서 날아온...외계인인가...ㅡㅡ;; 더보기