Cfile5.uf .18540E494D25FFBB054F8F

OpenCV 파일 저장기능 구현2

“OpenCV 파일 저장기능 구현(http://deios.kr/401)”에 파일 저장기능과 파일 열기기능을 강화해 보도록 하겠습니다.

 

먼저 “새 이름으로 저장”시 자동으로 확장자를 추가하기 위해서 OnFileSaveAs함수를 수정하겠습니다.

수정 전

CFileDialog dlgFile(TRUE);

CString fileName;

const int c_cMaxFiles = 100;

const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;

dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);

dlgFile.GetOFN().nMaxFile = c_cbBuffSize;

int chk = dlgFile.DoModal();

fileName.ReleaseBuffer();

if(chk == IDOK){

        pDoc->OnSaveDocument(dlgFile.GetPathName());

}

수정 후

CString strFilter = TEXT("JPEG files(*.jpg, *.jpeg, *.jpe) |  *.jpg; *.jpeg; *.jpe |\

                        Portable Network Graphics file(*.png) | *.png |\

                        Windows Bitmap files(*.bmp, *.dib) | *.bmp; *.dib |\

                        Sun resters(*.sr, *.ras) | *.sr; *.ras |\

                        TIFF files(*.tiff, *.tif) | *.tiff; *.tif |\

                        지원하는 모든 영상 파일 | *.jpg; *.jpeg; *.jpe; *.png; *.bmp; *.dib; *.sr; *.ras; *.tiff; *.tif || ");

CFileDialog dlgFile(FALSE, TEXT("jpg"), NULL, OFN_OVERWRITEPROMPT, strFilter, this);

 

if(IDOK == dlgFile.DoModal()) {

        pDoc->OnSaveDocument(dlgFile.GetPathName());

}

새 이름으로 저장 부분만 수정하면 뭔가 아쉬우니 파일 열기 부분도 확장자가 자동으로 들어가게 수정해 봅시다.

Cfile5.uf .18540E494D25FFBB054F8F

void CMFC_OpenCVApp::OnFileOpen()

{       // TODO: 여기에 명령 처리기 코드를 추가합니다.

        CString strFilter = TEXT("JPEG files(*.jpg, *.jpeg, *.jpe) |  *.jpg; *.jpeg; *.jpe |\

                                Portable Network Graphics file(*.png) | *.png |\

                                Windows Bitmap files(*.bmp, *.dib) | *.bmp; *.dib |\

                                Sun resters(*.sr, *.ras) | *.sr; *.ras |\

                                TIFF files(*.tiff, *.tif) | *.tiff; *.tif |\

                                지원하는 모든 영상 파일 | *.jpg; *.jpeg; *.jpe; *.png; *.bmp; *.dib; *.sr; *.ras; *.tiff; *.tif || ");

        CFileDialog dlgFile(TRUE, TEXT("jpg"), TEXT("*.jpg"), OFN_FILEMUSTEXIST |                             OFN_HIDEREADONLY | OFN_ALLOWMULTISELECT, strFilter);

        if(IDOK == dlgFile.DoModal()) {

                POSITION pos = dlgFile.GetStartPosition();

                while(pos) OpenDocumentFile(dlgFile.GetNextPathName(pos));

        }

}

이젠 다음과 같은 깔끔한 불러오기 & 저장 Dialog를 볼 수 있습니다.

Cfile22.uf .1377794D4D25FFBB45786A

Cfile8.uf .196B3F574D25FFBC07E2D4

cfile29.uf.12248E3B4D2600FF0E7A9C.pdfcfile7.uf.192619444D2603C109885B.zip

Similar Posts

  • HVR-2000 Series 이용하기

    이번 시간에는 조금 더 재미있는 것을 해 보겠습니다. 바로 요놈입니다.   바로 HyVision System의 HVR-2000 Series입니다. 일반적인 웹캠이야 그냥 연결만 해주면 바로 써먹을 수 있었는데, 요놈은 조금 다릅니다.   USB드라이버야 당연히 깔아줘야 하는거고… 별도의 SDK를 이용해서 Cam에 접근하게 됩니다.   하이비전시스템에서 HVR SDK Interface Guide를 친절하게 작성해 주셔서 별 무리 없이 실습을 진행 해 볼…

  • 공간 영역 필터링 – Dialog Box 기반 구현

    이번 시간에는 Dialog Box기반으로 OpenCV를 이용하는 방법에 대해서 알아보겠습니다.   공간 필터링(Spatial Filtering)이란 영상에 있는 공간 주파수 대역을 제거하거나 강조하는 필터 처리입니다. 사용되는 필터의 계수에 따라 특정 주파수를 제거하거나 강조하게 되며, 필터 마스크(Filter Mask)또는 회선 마스크의 가중치 선택이 공간 필터의 행동을 결정하게 됩니다. 영상처리에 사용되는 회선 마스크는 홀수 차원의 정방형 마스크가 사용되게 됩니다.   필터는…

  • RGB 컬러 공간 분리 – 메뉴 기반 구현2

    이번에는 지난 시간에 해 봤던 “RGB 컬러 공간 분리 – 메뉴 기반 구현(http://deios.kr/407)”의 새 창으로 여는 부분을 조금 더 일반화 하고, MFC에 적합하게 만들어 보겠습니다.   먼저 새 창으로 이미지를 여는 전역 함수를 작성해 보겠습니다. App Class의 헤더 파일을 열어 가장 마지막에 다음과 같이 추가해 줍니다. void OpenByNewDocument(LPTSTR szTitle, IplImage * image);  이 전역 함수는…

  • Visual Studio 2010에서 OpenCV 라이브러리 빌드하기

    저번에 해봤던 “Visual Studio 2010에서 OpenCV 이용하기(http://deios.kr/395)”에서는 디버그 모드로 이용이 불가능한 문제가 있었습니다. 그래서 이 번에는 직접 OpenCV 2.1 라이브러리를 빌드해 보도록 하겠습니다.   먼저 CMake를 다운받습니다. CMake는 크로스 플렛폼 Make네요. http://www.cmake.org/cmake/resources/software.html 설치는 별 다른게 없습니다. 그냥 다음 연타로 CMake를 설치해 줍니다.   다음으로 OpenCV 2.1 Windows Version을 다운받고, 적당한 곳에 압축을 풀어 줍니다. http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/OpenCV-2.1.0-win.zip/download…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다