---
title: "OpenCV 파일 저장기능 구현"
id: "675"
type: "post"
slug: "401"
published_at: "2010-12-30T16:25:56+00:00"
modified_at: "2025-12-12T04:28:24+00:00"
url: "https://dworld.deios.kr/401/"
markdown_url: "https://dworld.deios.kr/401.md"
excerpt: "“Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)”에 이어 이번에는 파일 저장기능을 구현해 보도록 하겠습니다. 파일 열기는 OnOpenDocument()함수를 재정의 했던거 기억하시죠? 마찬가지로 파일 저장은 OnSaveDocument()함수를 재정의 하면 됩니다. 이젠 그림만 봐도 아시겠죠? return CDocument::OnSaveDocument(lpszPathName); 부분을 다음과 같이 수정합니다. USES_CONVERSION; return m_CvvImage.Save(W2A(lpszPathName));..."
taxonomy_category:
  - "Study"
taxonomy_post_tag:
  - "MFC"
  - "OpenCV 2.1"
  - "vs 2010"
---

“[Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)](https://dworld.deios.kr/400)
”에 이어 이번에는 파일 저장기능을 구현해 보도록 하겠습니다.

파일 열기는 OnOpenDocument()함수를 재정의 했던거 기억하시죠? 마찬가지로 파일 저장은 OnSaveDocument()함수를 재정의 하면 됩니다.

이젠 그림만 봐도 아시겠죠?

```
return CDocument::OnSaveDocument(lpszPathName);
```

부분을 다음과 같이 수정합니다.

```
USES_CONVERSION;

return m_CvvImage.Save(W2A(lpszPathName));
```

저번에도 말씀드렸지만 OpenCV 라이브러리가 char *형을 받기 때문에 W2A매크로를 사용해 줍니다.

이번에는 새 이름으로 저장하는 기능을 구현해 보겠습니다.

새 이름으로 저장하기는 메뉴에 있죠? 메뉴를 클릭했을 경우 동작할 함수를 만들기 위해서 이번에는 이벤트 부분을 수정해 줘야 합니다.

다음과 같이 코딩하면 간단한 “새 이름으로 저장”기능이 구현됩니다.

```
void CMFC_OpenCVView::OnFileSaveAs()

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

        CMFC_OpenCVDoc* pDoc = GetDocument();

        ASSERT_VALID(pDoc);

 

        CFileDialog dlgFile(TRUE);

        CString fileName;

        const int c_cbBuffSize = (100 * (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());

}
```

cfile25.uf.1943DA554D1CB24A102126.pdfcfile10.uf.203E64554D1CB2571D493E.zip

### 이 글 공유하기:

- [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/401/?share=facebook)
- [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/401/?share=x)
-

### 이것이 좋아요:

좋아하기로드 중...

### *관련*

### 관련된 글:

1. [Visual Studio 2010에서 OpenCV 이용하기](https://dworld.deios.kr/395/)
2. [Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기](https://dworld.deios.kr/400/)
3. [RGB 컬러 공간 분리 – 메뉴 기반 구현](https://dworld.deios.kr/407/)
4. [RGB 컬러 공간 분리 – 메뉴 기반 구현2](https://dworld.deios.kr/408/)

## Similar Posts

- [https://dworld.deios.kr/421/](https://dworld.deios.kr/421/) 이전 시간에 만들었던 모달(Modal) Dialog를 모덜리스(Modeless) Dialog로 변환해 보겠습니다. Modal Dialog는 Dialog가 실행되는 동안 다른 작업을 하지 못하고, Modeless Dialog는 프로그램 실행 흐름을 방해하지 않는다는 것 정도는 알고 계시죠? 자 그럼 이전 시간 “MFC – Cam 영상 출력해보기(http://deios.kr/420)”에 만들었던 View Dialog를 멋지게 바꿔 보겠습니다. OnCamView함수를 다음과 같이 수정합니다. void CMFC_OpenCVApp::OnCamView() { // TODO: 여기에 명령… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/421/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/421/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/400/](https://dworld.deios.kr/400/) 이번에는 Visual Studio 2010에서 OpenCV 2.1 라이브러리를 활용하여 MFC프로젝트를 만들고, 이미지를 불러와서 화면에 출력해보겠습니다. 먼저 제 환경은 다음과 같고, DLL파일은 path환경변수에 설정되어 있습니다. DLL : “D:\lib\bin” Header : “D:\lib\include” Library : “D:\lib\lib” Source : “D:\lib\src” VS2010에서 [파일] → [새로만들기] → [프로젝트]를 선택합니다. 너무나도 당연하게 ‘Visual C++ MFC 응용 프로그램’을 선택해 주어야겠죠? … ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/400/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/400/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/407/](https://dworld.deios.kr/407/) 이번에는 본격적으로 OpenCV를 사용하여 영상처리를 해 보겠습니다. 그 첫 단계로 메뉴기반 정지영상 처리를 해 볼 것이며, cvSplit함수를 사용하여 RGB 컬러공간을 분리하는 예제를 구현해 보겠습니다. 먼저 OpenCV 2.1 C API Reference에서 cvSplit함수를 찾아보면 다음과 같습니다. cvSplit함수는 다중 채널(Multi-channel)배열을 여러 개의 단일 채널(Single-channel) 배열로 분할하거나, 배열에서 단일 채널을 추출 할 수 있음을 알 수 있습니다. 또한,… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/407/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/407/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/406/](https://dworld.deios.kr/406/) 이번에는 자주 사용하는 기능인 C&P(Copy & Paste)를 구현해 보도록 하겠습니다. C&P를 구현하기 위해서는 이미지를 DIB(장치 독립 비트맵;Device Independent Bitmap)으로 변환하여 클립보드 영역에 넘겨주거나, 클립보드 영역에서 데이터를 받아오면 됩니다. 클립보드 영역으로 데이터를 넘겨주기 위하여 CopyClipBoard맴버함수, CopyToHandle 맴버 함수를 추가하여, ID_EDIT_COPY이벤트 핸들러에 등록합니다. 먼저 CopyClipBoard 맴버 함수를 Doc Class에 작성하겠습니다. 반환 형식 : void 함수 이름… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/406/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/406/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/404/](https://dworld.deios.kr/404/) 이번 시간에는 드래그 앤 드롭(Drag & Drop) 기능을 구현해 보도록 하겠습니다. App Class의 InitInstance함수에 다음과 같은 코드를 추가하면 끝~! pMainFrame->DragAcceptFiles(); cfile8.uf.163148404D261B97190741.pdfcfile10.uf.133139404D261B9716AF4E.zip 관련된 글: Visual Studio 2010에서 OpenCV 이용하기 OpenCV 파일 저장기능 구현2 모든 창 닫기 구현 클립보드 기능 구현 ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/404/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/404/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/424/](https://dworld.deios.kr/424/) 이전 시간까지는 처음에 만들었던 “MFC_OpenCV”라는 프로젝트를 기준으로 진행하였습니다. 하지만, 이제부터는 새 프로젝트를 만들어서 진행하는 경우가 많이 생길텐데요… 이 때마다 프로젝트 설정을 바꿔줘야 하는게 여간 귀찮은게 아닙니다… 그. 래. 서. 이번 시간에는 이러한 설정을 파일로 저장하고, 가져오는 방법에 대해서 알아보겠습니다. 일단 첨부한 OpenCV210.props 파일을 적당한 디렉토리에 다운로드 하시구요… 먼저 이 파일을 어떻게 불러오는지부터 알아보겠습니다. 먼저 VS2010실행하셔서… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/424/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/424/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...

## 3 Comments

1. 재밋네요.. 퍼갈게요~ 많은 도움이 될듯 [답글](#comment-205)
  1. 퍼가는건 상관없지만 CCL은 지켜주세요~ [답글](#comment-206)

2. 핑백: [OpenCV 파일 저장기능 구현2 | D's World](https://dworld.deios.kr/402/)

### 댓글 남기기[응답 취소](/401/?t=1784840541#respond)
