달력

12020  이전 다음

  •  
  •  
  •  
  • 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

댓글을 달아 주세요

  1. ApPLe!  댓글주소 수정/삭제 댓글쓰기 2011.02.20 00:01

    아 ....저 이거
    저 부대안에서 파일배포프로그램만들때 MFC로 할때
    참고했었던것같네용 ㅋ

    하지만ㅋ결국ㅋ...
    정적소켓에다 쓰레드 돌려서 쑈부봤다는 ... 슬픈 비화가 ...ㅋㅋ

  2. sukay  댓글주소 수정/삭제 댓글쓰기 2011.02.25 01:48 신고

    누가 댓글을 달아 주셨나 했다..ㅋㅋㅋㅋㅋ

#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
TAG PCA

댓글을 달아 주세요

출처입니다 : 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
TAG CFile

댓글을 달아 주세요


프로그램을 구현하다 보면 데이터를 저장하기 위한 디렉토리 및 파일을 생성하는 경우가 많이 발생합니다.
파일을 다루는 경우 주로 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

댓글을 달아 주세요