달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

CSocket 은 내부적으로 윈도를 하나 생성 하여 이벤트를 처리하는것으로 알고 있습니다. 이를 위해선 MFC 에서 사용하는 여러가지 글로벌 변수들이 초기화 되어야 하는데 이게 제대로 안되서 문제가 생기는 것 같네요.. 먼저 프로그램 시작시에 AfxWinInit() 함수를 호출한다.


if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

    cerr << "MFC failed to initialize!" << endl; 
    return 1;
}

 
Posted by sukay
|

#pragma once

C++ 2011. 2. 16. 13:38
하나의 헤더파일이 여러군데 include 되어야하는 경우 출돌을 피하기 위하여
include 되는 헤더파일의 최상단에 명시한다.

Posted by sukay
|

CSocket Class

C++ 2011. 2. 16. 13:29

먼저 소켓과 동기, 비동기식에 대해서 알아보자

CSocket Class는 동기 소켓이며 함수가 호출 됐을때 그 함수가 끝나기 전 까지 함수를 리턴하지 않고 블럭 상태로 기다린다.
Send를 하면 보내기를 완료 할때까지 다음 단계로 넘어가지 않는다.
때문에 직관적으로 이해하기 쉽고 적은 노력으로 큰 효과를 얻을 수 있다.

//설명 및 파일 첨부 출처 : http://mycpp.blog.me/120099007279
Posted by sukay
|

Face Detect

프로그래밍 2011. 1. 21. 16:38

이번주엔 PCA를 이용한 얼굴 인식 프로그램 세미나를 마쳤다.
기본 개념이 너무 부족해서 발표자료 만들때 고생을 좀 하긴 했지만, 끝나니 좋긴하다..
이제 어떤거 해야하나.. 먼가 할껀 많은데 수정도 해야하고 다른 프로젝트 진행도 하고
어떤방향으로 진행해야할지 모르겠다.. 너무 두리뭉실한 느낌이라서.. 에고 답답하기도 하고

앞으로 차원의 수와 Conf 값 정하는 부분이 남았고..
영상처리 부분은 어떻게 진행해야 하려나..


PCA 얼굴인식 프로그램 시연 영상 첨부 
Posted by sukay
|

출처입니다 : http://mtjeaids.blog.me/70069847285


파일 입출력을 할 때 주소를 넘길때 사용해봤습니다.
간단하게 사용이 됩니다.

-  CString => const char*
CString FileName = _T("file.txt");
const char* Name;
Name = (CStringA)FileName;

- const char* -> CString
const char* Name = "test";
CString FileName;
FileName = (CString)Name;

CStringT type : Declaration
CStringA        : An ANSI charcter type string with CRT support.
CStringW       : A Unicode charater type string with CRT support.
CString          : Both ANSI and Unicode charcter types with CRT support

Posted by sukay
|

-1.@IND00

C++ 2010. 12. 14. 00:22

NaN, NAN, nan은 "not a number"라는 뜻으로 숫자가 아닌것을 의미합니다.
가끔 연산을 하였을 때 이러한 값이 나오는 경우가 있곤 하는데,
이 이유에 대해서 설명 하자면

1) 0.0000000000000000000000001과 같은 0으로 처리해 버리는 수로 나누거나 실수 연산에서 0.0으로 나누는 상황에 발생합니다.
해결방법은 저런 값으로 나누지 않으면 됩니다. 값을 수정해야 한다는 말이죠.
0.0으로 처리될 수 있는 상황에 대하여 적당한 값을 주고 오류만 없애 주고 연산된 값이 꼭 필요하지 않는 이상 버리면 됩니다.

2) NULL을 반환해도 0.0으로 표시되거나 에러를 표시할 수 없는경우에도 발생하며 sqrt(-1.0)을 연산하면 -1.#IND00이라는 값을 반환합니다.
float.h의 _isnan()을 이용하면 NaN이 반환되는것을 체크할수 있고, 정상적인 숫자라면 0을 아니라면 NaN을 반환하니 적당히 사용하면 될것입니다.



Posted by sukay
|

CFile Class - Write, Read

C++ 2010. 12. 11. 00:01


MFC에서 CFile Class로 읽고 쓰기 예제
FILE* 만 사용하다가 CFile 클래스를 처음 사용해 보았다.
'\n'이 안들어가서 찾아보니
'\r\n' 으로 사용하라는 말이 있어 사용해 보니 적용이 되었다.
이유는 아직 잘 모르지만 이번 과제 끝나면 CFile과 직렬화에 대해서 공부 좀하고 정리해 야겠다.
MFC를 배웠다면 당연하다는 자연스러운게 이럴때면 배우지 않은게  아쉽긴하다..

Posted by sukay
|

프로그램을 구현하다 보면 데이터를 저장하기 위한 디렉토리 및 파일을 생성하는 경우가 많이 발생합니다.
파일을 다루는 경우 주로 FILE , CFile을 이용하여 파일을 다루곤 하는데
간혹 파일 및 디렉토리 생성과 삭제만 다룰 경우가 발생하고
따로 파일 포인터를 사용하지 않고 파일과 디렉토리 생성 및 삭제에 간편하게 사용되는 함수를 사용하곤 합니다.

헤더 파일 : #include <direct.h>
함수 명 :
mkdir(DirName)  -  디렉토리 생성 
rmdir(DirName)  -  디렉토리 제거
unlink(FileName)  -  파일 삭제

Posted by sukay
|

출처 : http://blog.naver.com/sseon_?Redirect=Log&logNo=130009212405

VC++ 6.0기반의 Matrix 관련 소스를 보다가 예제를 작성해서 테스트하는 중에

error LNK2001: unresolved external symbol __endthreadex

요런 에러가 나왔습니다.

간단하게
Project > Setting > General > Microsoft Fundation Classes > Use MFC in a Static Library를 선택하면 해결.
2005와 2008에서도 이런 셋팅문제 발생하곤하는데
찾아보면 고수들이 정리해놓은 블로그에서 간단하게 검색할수있어서 다행인거 같습니다. 잘쓸게요~

Posted by sukay
|
쓰레드를 돌렸다.

CWinThread *m_thread;
전역으로 선언하고
m_thread = AfxBeginThread(ManageThread, this, THREAD_PRIORITY_NORMAL); 
OnThreadStart 버튼 클릭 이벤트에 정의해주고
ManageThread에서 카메라를 통해 입력을 받는데..
입력은 오~ 잘 되네.....

근데 쓰레드를 멈추려고 하니
Unhandled exception at 0x75129617 in OpenCVFaceDetect.exe: Microsoft C++ exception: cv::Exception at memory location 0x053ef580..
이건 머지..
메모리 문제인거 같은데
멈춤 버튼에서 클릭 이벤트가 발생하면

OnThreadStop();
 쓰레드를 종료하고

WaitForSingleObject(m_thread->m_hThread, 1000);
 쓰레드가 완전히 종료 되길 기다린다..

왜 WaitForSingleObject에서 문제가 발생하지....
OnThreadStart()에서 WaitForSingleObject를 체크해 보면 잘되는데

여기에 사람들이 많이 오는건아니지만
혹시라도 하는 기대에
이글을 보게 된 초고수 형님..
OnBnClickedBtnThread2(void){
if(m_thread) {  
  OnThreadStop(); // 스레드 종료 후 종료
  WaitForSingleObject(m_thread->m_hThread, 1000);  
 }  
}
WaitForSingleObject에서 에러가 발생하는 이유가 먼지..
답을 좀 가르쳐 주시면 우리학교 식사라도..ㅠㅠ

=== 결국 답은 제가 찾았습니다...
쓰레드가 문제가 아니라 카메라에서 인식받을때
IplImage* image에서 메모리 공간이 해지되는 과정에서 발생하였습니다.. ㅠㅠ
Posted by sukay
|