본문 바로가기

분류 전체보기179

[MFC] YCbCr <-> RGB 변환 이미지 처리를 하다보면 YCbCr 과 RGB 간의 변환이 필요할 때가 많다. 그럴경우, 간단한 방법으로 다음과 같이 채널 별 weigth를 주어 처리할 수 있다. Y : 16~235 Cb, Cr : 16 ~ 240 RGB -> YCbCr 변환 Y = 0.257*R+0.504*G+0.098*B+16; Cb = -0.148*R-0.291*G+0.439*B+128; Cr = 0.439*R-0.368*G-0.071*B+128; YCbCr -> RGB 변환 R = 1.164*(Y-16)+1.596*(Cr-128); G = 1.164*(Y-16)-0.813*(Cr-128)-0.392*(Cb-128); B = 1.164*(Y-16)+2.017*(Cb-128); 위와 같이 간단한 수식을 적용하여 변환할 수 있다. 2012. 12. 26.
[C] 디렉토리(폴더)의 모든 파일을 제거 디렉토리(폴더)내의 모든 파일을 제거, 삭제하는 함수 DeleteAllFile 입니다. 파일을 삭제하는 함수이므로 주의해서 사용하시기 바랍니다. 핵심 코드는 CFileFind, FindFile, DeleteFile 입니다. void DeleteAllFile( LPCSTR szDir ) { CString strName; strName.Format( "%s\\*.*", szDir ); CFileFind ff; BOOL bFind = ff.FindFile( strName ); while( bFind ) { bFind = ff.FindNextFile(); if( ff.IsDots() == TRUE || ff.IsDirectory() == TRUE ) continue; DeleteFile( ff.GetFilePa.. 2012. 12. 26.
[C] rand 함수를 이용하여 난수(랜덤) 발생시키기 0 ~ 999 사이의 난수 값을 받으려면 아래와 같이 코드를 작성한다. srand((unsigned)time(NULL)); int num = rand() % 1000; 랜덤 값을 받아야 하는 프로그램(로또 같은) 만들 때 사용하면 되겠다. 2012. 12. 26.
[MFC] 문자열 파싱하기 오늘은 문자열 파싱에 대해서 간단히 정리한다. 문자열 파싱이란 하나의 문자열에서 각각의 문자들을 분리하는 과정이라고 생각하면 된다. 이 과정을 통해 긴 문자열에서 원하는 문자만 뽑아 임의의 변수로 저장하여 사용할 수 있다. 방법 1. AfxExtractSubString() 함수 이용 AfxExtractSubString() 함수를 이용하여 간단하게 문자열을 분리할 수 있다. 다음 예제를 살펴보자 예제 1) CString str = "118.131.90.22"; //파싱할 문자열 CString strA, strB, strC, strD; //파싱되는 문자열을 담을 변수선언 AfxExtractSubString(strA, str, 0, '.'); // strA == "118" AfxExtractSubString(.. 2012. 12. 26.
[MFC] 리스트컨트롤(List Control) 클릭한 곳의 index값 얻어오기 리스트컨트롤 클래스에서 클릭 이벤트를 추가한다. 1. NM_CLICK 이벤트 추가 2. 해당 이벤트 함수내에 소스 추가 void CSlideFrame::OnNMClickList(NMHDR *pNMHDR, LRESULT *pResult) { // LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast(pNMHDR); NM_LISTVIEW* pNMView = (NM_LISTVIEW*)pNMHDR; int index = pNMView->iItem; *pResult = 0; } 2012. 12. 24.
[MFC] 다이얼로그에 다이얼로그 붙이기 1. 부모 다이얼로그 생성 2. 자식 다이얼로그 생성 - 자식 다이얼로그 속성창에서 style은 child, border는 NONE 으로 설정 변경 3. 부모 다이얼로그의 헤더파일에서 해당 자식 다이얼로그 변수 포인터로 생성 CChildDlg *m_pChildDlg; 4. 부모 다이얼로그의 OnInitDialog에서 m_pChildDlg = new CChildDlg; m_pChildDlg->Create( CChildDlg::IDD, this ); m_pChildDlg->ShowWindow( SW_SHOW ); m_pChildDlg->MoveWindow( rcDlg ); // 크기는 알아서 맞게 지정 이렇게 하면 자식 다이얼로그가 부모 다이얼로그에 붙는다. 2012. 12. 24.