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

### 관련된 글:

1. [Visual Studio 2010에서 OpenCV 이용하기](https://dworld.deios.kr/395/)
2. [Drag and Drop 지원하기](https://dworld.deios.kr/404/)
3. [모든 창 닫기 구현](https://dworld.deios.kr/405/)
4. [클립보드 기능 구현](https://dworld.deios.kr/406/)

## Similar Posts

- [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) 배열로 분할하거나, 배열에서 단일 채널을 추출 할 수 있음을 알 수 있습니다. 또한,…
- [https://dworld.deios.kr/420/](https://dworld.deios.kr/420/) 이번 시간에는 MFC프로젝트에서 Cam 영상을 받아오는 부분을 구현해 보겠습니다. “동영상 처리” → “영상 보기”메뉴를 추가하고, 해당 메뉴를 클릭했을 때, 영상을 뿌려주는 Dialog를 띄웁니다. Dialog에서 “시작” 버튼을 클릭했을 경우 Caption이 “중지”로 바뀌고, Static 영역에 영상을 뿌려주게 만들어 보겠습니다. 먼저 사용할 다이얼로그부터 만들어야겠죠? [리소스 뷰]에서 [리소스 추가]를 선택합니다. [Dialog]가 선택된 것을 확인하고 [새로 만들기]를…
- [https://dworld.deios.kr/413/](https://dworld.deios.kr/413/) 지금까지 VS2010과 OpenCV 2.1라이브러리를 이용한 MFC 프로그래밍 기초에 대해서 알아봤습니다. 우리가 하려고 하는 것이 동영상 처리이므로 이번 시간에는 Cam으로부터 영상을 받아와서 출력하는 방법에 대해서 알아보겠습니다. 먼저 새 프로젝트를 Win32 콘솔 응용 프로그램 형식으로 만들어 줍니다. OpenCV 2.1 라이브러리를 사용하기 위한 각종 세팅은 당연히 해주셔야 겠죠? 자세한 내용은“Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)”를 참고하세요….
- 함수종속 어떤 릴레이션 R에서 X와 Y를 의 애트리뷰트 집합의 부분집합이라 하자. X의 값 각각에 대해 시간에 관계 없이 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수종속이라 하고 X →Y로 표기한다. 이 때, X를 결정자, Y를 종속자라고 한다. 제 1 정규형(1NF) 어떤 릴레이션 R에 속한 모든 도메인이 원자값만으로 되어 있다면 제 1 정규형이라고 한다. 제 2…
- [https://dworld.deios.kr/430/](https://dworld.deios.kr/430/) 예전에 한번 했던거지만… ARToolkit 리빌드 기념으로 모토글램에 올려봤다… 뭐 역시… 일본인의 집념에 찬사를… 관련된 글: 고속 네트워크에서의 메모리 병목 현상 TCP 폭주(혼잡)제어 Drag and Drop 지원하기 Face Detect
- [https://dworld.deios.kr/419/](https://dworld.deios.kr/419/) 이번 시간에는 조금 더 재미있는 것을 해 보겠습니다. 바로 요놈입니다. 바로 HyVision System의 HVR-2000 Series입니다. 일반적인 웹캠이야 그냥 연결만 해주면 바로 써먹을 수 있었는데, 요놈은 조금 다릅니다. USB드라이버야 당연히 깔아줘야 하는거고… 별도의 SDK를 이용해서 Cam에 접근하게 됩니다. 하이비전시스템에서 HVR SDK Interface Guide를 친절하게 작성해 주셔서 별 무리 없이 실습을 진행 해 볼…

## 3 Comments

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

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

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