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

  • |

    TCP 폭주(혼잡)제어

    TCP의 폭주제어에서 예약방식을 못 쓰고 피드백 기반 방식을 사용하여야 하는 이유를 설명하시오. 예약 방식의 경우 데이터 전송 중 경로상의 라우터에서 폭주 혹은 에러가 발생했을 경우 송신자는 계속 데이터를 보내게 되어 혼잡이 가중된다. 이를 해결하기 위해 피드백 방식을 사용한다.송신자는 약간의 데이터만 전송하여 도착 여부를 확인 후 점점 전송량을 늘려간다. 이처럼 네트워크의 상태에 따라 송신측에서 전송량을 조절하여야 한다….

  • MFC – Cam 영상 출력해보기

    이번 시간에는 MFC프로젝트에서 Cam 영상을 받아오는 부분을 구현해 보겠습니다.   “동영상 처리” → “영상 보기”메뉴를 추가하고, 해당 메뉴를 클릭했을 때, 영상을 뿌려주는 Dialog를 띄웁니다. Dialog에서 “시작” 버튼을 클릭했을 경우 Caption이 “중지”로 바뀌고, Static 영역에 영상을 뿌려주게 만들어 보겠습니다.   먼저 사용할 다이얼로그부터 만들어야겠죠? [리소스 뷰]에서 [리소스 추가]를 선택합니다.   [Dialog]가 선택된 것을 확인하고 [새로 만들기]를…

  • 모든 창 닫기 구현

    이번 시간에는 열려있는 모든 창을 닫는 기능을 구현해 보도록 하겠습니다. 먼저 리소스 뷰를 보기 좋게 꺼내어 두는게 좋겠죠? [보기] → [다른 창] → [리소스 뷰]를 클릭합니다.   이번엔 메뉴 바에 해당 기능을 추가할 예정입니다. 리소스 뷰에서 [Menu] → [IDR_*TYPE]을 선택한 후 그림과 같이 지정합니다. Caption : 모든 창 닫기 ID : ID_FILE_CLOSE_ALL Prompt : 열려진…

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

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

답글 남기기

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