Top 46 Mfc 영상 처리 예제 All Answers

You are looking for information, articles, knowledge about the topic nail salons open on sunday near me mfc 영상 처리 예제 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: mfc 영상 처리 예제 MFC BITMAPINFOHEADER, StretchDIBits, StretchDIBits 영상 깨짐, C DC, StretchDIBits 확대, SetStretchBltMode


디지털 영상처리 using MFC(C++) 1/2
디지털 영상처리 using MFC(C++) 1/2


MFC를 이용한 영상처리 프로그래밍 [역상 계산] : 네이버 블로그

  • Article author: blog.naver.com
  • Reviews from users: 13836 ⭐ Ratings
  • Top rated: 3.6 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about MFC를 이용한 영상처리 프로그래밍 [역상 계산] : 네이버 블로그 MFC를 이용한 영상처리 프로그래밍 [역상 계산] · Visual Studio 2013 기준으로 작성한다. · 문서 템플릿 속성에서 파일 확장자는 RAW를 선택하고, … …
  • Most searched keywords: Whether you are looking for MFC를 이용한 영상처리 프로그래밍 [역상 계산] : 네이버 블로그 MFC를 이용한 영상처리 프로그래밍 [역상 계산] · Visual Studio 2013 기준으로 작성한다. · 문서 템플릿 속성에서 파일 확장자는 RAW를 선택하고, …
  • Table of Contents:

악성코드가 포함되어 있는 파일입니다

작성자 이외의 방문자에게는 이용이 제한되었습니다

MFC를 이용한 영상처리 프로그래밍 [역상 계산] : 네이버 블로그
MFC를 이용한 영상처리 프로그래밍 [역상 계산] : 네이버 블로그

Read More

C++, Mfc 영상처리 프로그램 | mfc 영상 처리 예제 새로운 업데이트

  • Article author: ko.nataviguides.com
  • Reviews from users: 31536 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about C++, Mfc 영상처리 프로그램 | mfc 영상 처리 예제 새로운 업데이트 이에 대한 추가 정보 mfc 영상 처리 예제 주제에 대해서는 다음 문서를 참조하십시오. 아이디어가 있으면 기사 아래에 댓글을 달거나 주제에 대한 다른 … …
  • Most searched keywords: Whether you are looking for C++, Mfc 영상처리 프로그램 | mfc 영상 처리 예제 새로운 업데이트 이에 대한 추가 정보 mfc 영상 처리 예제 주제에 대해서는 다음 문서를 참조하십시오. 아이디어가 있으면 기사 아래에 댓글을 달거나 주제에 대한 다른 …
  • Table of Contents:

주제에 대한 비디오 보기 mfc 영상 처리 예제

C++ MFC 영상처리 프로그램 – mfc 영상 처리 예제 및 이 주제에 대한 세부정보

키워드 정보 mfc 영상 처리 예제

콘텐츠에 대한 이미지 mfc 영상 처리 예제

주제에 대한 기사 평가 mfc 영상 처리 예제

기사의 키워드 C++ MFC 영상처리 프로그램

Recent Posts

Recent Comments

C++, Mfc 영상처리 프로그램 | mfc 영상 처리 예제 새로운 업데이트
C++, Mfc 영상처리 프로그램 | mfc 영상 처리 예제 새로운 업데이트

Read More

Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성

  • Article author: thebook.io
  • Reviews from users: 21026 ⭐ Ratings
  • Top rated: 4.9 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성 예제 프로그램은 최대한 단순한 형태의 MFC 응용 프로그램으로 만들 것이며, 예제 프로그램을 만들어보면서 앞에서 배운 BMP 파일 구조를 되짚어보자. …
  • Most searched keywords: Whether you are looking for Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성 예제 프로그램은 최대한 단순한 형태의 MFC 응용 프로그램으로 만들 것이며, 예제 프로그램을 만들어보면서 앞에서 배운 BMP 파일 구조를 되짚어보자. 더북, TheBook, Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.
  • Table of Contents:
Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성
Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성

Read More

미니프로젝트. C++, MFC 기반 영상처리 프로그래밍

  • Article author: velog.io
  • Reviews from users: 45490 ⭐ Ratings
  • Top rated: 5.0 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 미니프로젝트. C++, MFC 기반 영상처리 프로그래밍 처음 제작해본 C++과 MFC로 만든 영상처리기 설명. … 프로젝트 개요; 디지털 영상처리; 추가 구현; 마치며. 개요. 전체적 구성. 실행 화면 … …
  • Most searched keywords: Whether you are looking for 미니프로젝트. C++, MFC 기반 영상처리 프로그래밍 처음 제작해본 C++과 MFC로 만든 영상처리기 설명. … 프로젝트 개요; 디지털 영상처리; 추가 구현; 마치며. 개요. 전체적 구성. 실행 화면 … 처음 제작해본 C++과 MFC로 만든 영상처리기 설명
  • Table of Contents:

C++Win32MFC

목차

개요

디지털 영상처리

추가구현

코드 & 실행파일

미니프로젝트. C++, MFC 기반 영상처리 프로그래밍
미니프로젝트. C++, MFC 기반 영상처리 프로그래밍

Read More

OpenCV와 MFC 연동해서 웹캠 영상을 출력하기 – 멈춤보단 천천히라도

  • Article author: webnautes.tistory.com
  • Reviews from users: 18966 ⭐ Ratings
  • Top rated: 4.8 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about OpenCV와 MFC 연동해서 웹캠 영상을 출력하기 – 멈춤보단 천천히라도 다이얼로그기반 MFC 프로젝트 생성부터 예제 코드 실행까지 단계별로 설명합니다. 1. MFC 응용 프로그램 생성. 2. UI 구성. 3. OpenCV 관련 코드 추가. …
  • Most searched keywords: Whether you are looking for OpenCV와 MFC 연동해서 웹캠 영상을 출력하기 – 멈춤보단 천천히라도 다이얼로그기반 MFC 프로젝트 생성부터 예제 코드 실행까지 단계별로 설명합니다. 1. MFC 응용 프로그램 생성. 2. UI 구성. 3. OpenCV 관련 코드 추가. OpenCV에서 캡처한 웹캠 영상을 MFC의 Picture Control에 보여주기 위해 필요한 과정을 설명합니다. OpenCV 4.5.3과 Visual Studio Community 2019를 사용해서 진행했지만 다른 버전에서도 거의 동일하게 동작할..
  • Table of Contents:
OpenCV와 MFC 연동해서 웹캠 영상을  출력하기 - 멈춤보단 천천히라도
OpenCV와 MFC 연동해서 웹캠 영상을 출력하기 – 멈춤보단 천천히라도

Read More

컴퓨터 프로그래밍(암호학, 알고리즘)

  • Article author: blog.daum.net
  • Reviews from users: 8772 ⭐ Ratings
  • Top rated: 3.4 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 컴퓨터 프로그래밍(암호학, 알고리즘) 2000년 정도에 처음 영상처리 프로그래밍을 배울 때, 교수님은 Visual C++을 … Visual Studio 2017을 설치하면, ‘MFC 응용 프로그램’용 프로젝트 … …
  • Most searched keywords: Whether you are looking for 컴퓨터 프로그래밍(암호학, 알고리즘) 2000년 정도에 처음 영상처리 프로그래밍을 배울 때, 교수님은 Visual C++을 … Visual Studio 2017을 설치하면, ‘MFC 응용 프로그램’용 프로젝트 … 2000년 정도에 처음 영상처리 프로그래밍을 배울 때, 교수님은 Visual C++을 가지고 강의를 했었고, 나는 Java를 가지고 프로그래밍을 했다. (그 때 한참 Java에 빠져 있을 때여서, 모든 프로그래밍을 java로 했었..컴퓨터 프로그래밍에 대해 작성한 글들 – ..컴퓨터 프로그래밍(암호학, 알고리즘)
  • Table of Contents:
컴퓨터 프로그래밍(암호학, 알고리즘)
컴퓨터 프로그래밍(암호학, 알고리즘)

Read More

mfc 영상 처리 예제

  • Article author: dongseo.ac.kr
  • Reviews from users: 25752 ⭐ Ratings
  • Top rated: 4.7 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about mfc 영상 처리 예제 ✓ 영상처리에 사용되는 RAW 파일 포맷을 이해한다. ✓ MFC AppWizard[exe]를 이용한 영상처리 프로그램 기법을 익힌다. ✓ MFC의 기본 구조를 이해한다. …
  • Most searched keywords: Whether you are looking for mfc 영상 처리 예제 ✓ 영상처리에 사용되는 RAW 파일 포맷을 이해한다. ✓ MFC AppWizard[exe]를 이용한 영상처리 프로그램 기법을 익힌다. ✓ MFC의 기본 구조를 이해한다.
  • Table of Contents:
mfc 영상 처리 예제
mfc 영상 처리 예제

Read More

제 1 장 영상처리 기초. – ppt download

  • Article author: slidesplayer.org
  • Reviews from users: 28897 ⭐ Ratings
  • Top rated: 4.3 ⭐
  • Lowest rated: 1 ⭐
  • Summary of article content: Articles about 제 1 장 영상처리 기초. – ppt download 다음 용어 및 개념을 설명할 수 있다 영상처리 알고리즘의 부류를 설명할 수 있다 샘플링, … [MFC 응용프로그램마법사 – 응용프로그램종류] 대화상자에서 [Unicode … …
  • Most searched keywords: Whether you are looking for 제 1 장 영상처리 기초. – ppt download 다음 용어 및 개념을 설명할 수 있다 영상처리 알고리즘의 부류를 설명할 수 있다 샘플링, … [MFC 응용프로그램마법사 – 응용프로그램종류] 대화상자에서 [Unicode … 학습 목표 영상처리의 정의를 설명할 수 있다. 다음 용어 및 개념을 설명할 수 있다 영상처리 알고리즘의 부류를 설명할 수 있다 샘플링, 양자화 컬러모델 : RGB, CMY, HIS, YCbCr 영상 파일 형식 : RAW, PBM, PGM, PPM 영상처리 알고리즘의 부류를 설명할 수 있다 픽셀기반처리, 영역기반처리, 기하학적처리 Visual Studio 2010을 활용하여 간단한 윈도우 프로그램을 작성할 수 있다제 1 장 영상처리 기초.
  • Table of Contents:
제 1 장 영상처리 기초. -  ppt download
제 1 장 영상처리 기초. – ppt download

Read More


See more articles in the same category here: Chewathai27.com/to/blog.

MFC를 이용한 영상처리 프로그래밍 [역상 계산]

영상처리 MFC를 이용한 영상처리 프로그래밍 [역상 계산] Kivahan ・ URL 복사 본문 기타 기능 공유하기 신고하기 Visual Studio 2013 기준으로 작성한다.

파일 -> 새로만들기 -> 프로젝트에 들어가서 “MFC 응용 프로그램”을 선택하고 하기 순서대로 진행한다.

문서 템플릿 속성에서 파일 확장자는 RAW를 선택하고, CDigital_Image_ProcessingView를 선택하고 기본 클래스를 CScrollView를 선택한다. ScrollView란 영상의 크기가 현재 열린 창의 크기보다 커서 영상 전체가 창 내부에 표시가 안 될 때 자동으로 스크롤바가 생성되어 아래 위로 이동시켜 영상을 볼 수 있도록 해주는 기능이다.

Finish버튼을 누르면 위 처럼 생성된 프로젝트를 볼 수 있다. 빌드 후 실행해보자. 하기 처럼 GUI가 지원되는 응용프로그램이 실행된다.

클래스 정보를 보면 6개의 클래스들이 존재한다.

가장 중요한 두개 클래스는 문서(Document)와 뷰(View)를 나타내는 “CImage_ProcessingDoc”과 “CImage_ProcessingView”클래스 이다. 말 그대로 문서클래스는 데이터를 읽어서 저장하고 처리하는 클래스이고 View 클래스는 영상데이터를 Display 시키는 클래스이다.

영상데이터를 읽어오고 저장하는 기능은 CImage_ProcessingDoc 내부에 Serialize라는 함수를 통해서 구현한다.

문서를 화면의 창을 통해서 나타내는 기능은 View 클래스의 OnDraw함수에서 담당한다.

MDI (Multiple Document, 프로그램 내에 여러 개의 창이나 문서를 열 수 있는 구조) 구조의 MFC프로그램은 ‘메인프레임 윈도우’, ‘문서객체’, View 객체로 나누어 진다.

이러한 구조를 Document/View구조라고 하며 세 가지 객체들은 서로 통신한다. 예를 들면 View 객체에서 문서 객체의 데이터를 참조 할 수 있어야 화면에 처리한 영상을 뿌릴 수 있을 것이다. 이를 위해서 MFC는 객체들 사이에서 데이터나 함수의 상호참조를 위해서 유용한 함수들을 제공한다.

즉, View객체의 OnDraw함수가 화면에 출력을 하려면 문서객체에 있는 데이터를 가져와야하는데 이때 필요한 함수가 GetDocument 함수 이다.

자 이제 Document 객체에 영상을 읽어와서 저장하는 기능을 추가해 보자.

VS 2013에서는 위 창에서 하기처럼 입력한다.

Image_ProcessingDoc.h에 추가된것을 볼 수 있다.

~Doc.cpp의 Serialize( )함수에 하기 코드를 넣습니다.

CArchive 클래스는 외부 문서 데이터를 읽고 저장하는 기능을 지원하는 클래스이다. 이 클래스를 이용하면 데이터를 파일에 저장하거나 파일로 부터 데이터를 읽어 들일 수 있다.

데이터를 읽고/저장을 했으니, CImage_ProcessingView 클래스의 OnDraw( )함수로 Display처리해보자.

OnDraw 함수는 View 클래스의 맴버이고 문서(영상) 데이터는 도큐먼트 객체가 가지고 있다.

virtual void OnDraw(); -~view함수에서 virtual 선언되어 있다.

따라서 View 클래스에서 문서데이터를 사용하기 위해서는 도큐먼스 클래스의 포인터를 받아와야 한다. GetDocument( ) 함수는 이러한 참조 기능을 수행해 주는 함수이다.

~view.h에서 CImage_ProcessingView클래스에서 하기처럼 선언되어 있고,

CImage_ProcessingDoc* GetDocument() const;

~view.cpp에서 GetDocument는 하기처럼 선언되어 있습니다.

CImage_ProcessingDoc* CImage_ProcessingView::GetDocument() const

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CImage_ProcessingDoc)));

return (CImage_ProcessingDoc*)m_pDocument;

}

해석하면,

GetCocument함수는 ~Doc 클래스 type의 객체를 리턴하여 ~Doc 클래스 Type포인터 pDoc에 넣는다.

pDC->SetPixel(j, i, RGB(InVal, InVal, InVal));

세로위치 i 픽셀, 가로위치 j 픽셀에 원본 영상의 밝기값을 화면 출력한다.

pDC->SetPixel(j + 300, i, RGB(OutVal, OutVal, OutVal));

처리 경과 영상을 화면에 출력하는 부분이다. 가로 위치는 j+300의 위치이다 (처음에는 아무 데이터도 없다)

정리하면,

입력된 영상데이터는 ~Doc 클래스의 멤버변수인 m_InImg 배열에 저장되어 있으므로 이 데이터를 다를 클래스인 ~View 클래스에서 이용하기 위해서 View가 Document를 참조하는 함수인 GetDocument 함수를 사용하여 문서의 포인터를 가져오고있다. 포인터 pDoc를 이용하면 Document의 public 타입의 클래스 변수값을 참조할 수 있다. InVal과 OutVal 변수가 두 배열값을 받아오고 있으며, 이 값들을 SetPixel( ) 함수를 사용하여 화면에 출력하고 있다.

아래는 256 x 256 8bit raw 영상을 읽어서 SetPixel함수로 Display한 결과이다. 여기에 ‘역상 처리’기능을 넣어 보자.

리소스 뷰 –> Menu –> IDR_Image_ProcessingTYPE를 선택한다.

역상 계산을 하위 메뉴어 넣고 속성창의 ID, Caption, Prompt 에 차례로 입력한다. Caption의 (&R)부분은 단축키 명령이다. Prompt는 명령 메뉴 선택시 실행창의 상태바 부분에 이 명령의 기능을 표시해 주는 설명을 나타낸다.

추가한 메뉴에 기능을 추가해보자. 프로젝트 –> 클래스 마법사를 선택한다.

~Doc.cpp에 함수가 등록됨을 볼 수 있다.

하기의 역상처리 코드를 입력한다.

현재 작업 위치는 Doc 클래스의 멤버함수이므로 두 배열 모두 직접 사용할 수 있다. View 클래스에서는 이 배열을 사용하기 위해 GetDocument( )함수를 사용하여 Doc 클래스 인스턴스의 포인터를 받아왔음.

결과를 보자.

인쇄

Visual C++ 영상 처리 프로그래밍: BmpShow 프로그램 작성

3.4.2 BmpShow 프로그램 작성

앞에서 배운 BMP 파일 구조 정보와 비트맵 화면 출력 함수를 이용하여 실제 BMP 파일을 화면에 출력하는 예제 프로그램을 작성해보자. 예제 프로그램은 최대한 단순한 형태의 MFC 응용 프로그램으로 만들 것이며, 예제 프로그램을 만들어보면서 앞에서 배운 BMP 파일 구조를 되짚어보자.

우선 BmpShow라는 이름의 새로운 프로젝트를 생성하자. Visual Studio를 실행하여 메뉴에서 [파일] > [새로 만들기] > [프로젝트…]를 선택하자. 그림 3-11과 같이 새 프로젝트 대화 상자가 나타나면 여기서 프로젝트의 형식은 ‘Visual C++’ 하위의 ‘MFC’를 선택하고, 템플릿 항목에서는 ‘MFC 응용 프로그램ʼ을 선택하자. 그리고 하단의 프로젝트 이름 적는 곳에는 BmpShow라는 이름을 입력하자. 프로젝트 위치는 기본값을 사용해도 되고, 원한다면 임의의 폴더를 선택하여도 무방하다. 그리고 우측 하단의 “솔루션용 디렉터리 만들기” 항목의 체크는 해제하도록 하자. 그림 3-11과 같이 입력이 완료되었으면 하단의 [확인] 버튼을 클릭하자.

▼ 그림 3-11 BmpShow 프로젝트 생성

새 프로젝트를 선택하고 난 후 나타나는 MFC 응용 프로그램 마법사에서는 응용 프로그램 종류에서 한 가지만 변경하도록 하자. 프로젝트 스타일이 기본으로 Visual Studio가 선택되어 있는데, 이 설정 그대로 프로그램을 생성하면 불필요한 UI 관련 파일들이 너무 많이 생성된다. 그러므로 그림 3-12와 같이 프로젝트 스타일을 MFC 표준으로 변경한 후, [마침] 버튼을 클릭하여 프로젝트를 생성하자.

OpenCV와 MFC 연동해서 웹캠 영상을 출력하기

반응형

OpenCV에서 캡처한 웹캠 영상을 MFC의 Picture Control에 보여주기 위해 필요한 과정을 설명합니다.

OpenCV 4.5.3과 Visual Studio Community 2019를 사용해서 진행했지만 다른 버전에서도 거의 동일하게 동작할 듯합니다.

다이얼로그기반 MFC 프로젝트 생성부터 예제 코드 실행까지 단계별로 설명합니다.

1. MFC 응용 프로그램 생성

2. UI 구성

3. OpenCV 관련 코드 추가

4. 실행 결과

5. 참고

2015. 11. 19

최초 작성

2018. 10. 22

그레이스케일 영상으로 변환 후, 영상출력이 제대로 안되는 문제가 있었네요..

BITMAPINFO에 palette를 추가해서 해결했습니다.

2021. 9. 25

Visual Studio 2019, OpenCV 4.5.3에서 테스트

1. MFC 응용 프로그램 생성

1-0. 새 프로젝트 만들기를 클릭합니다.

1-1. MFC 앱을 선택하고 다음을 클릭합니다. ( Visual Studio 2019를 최근 버전으로 업데이트후 진행한거라 항목이 다를 수 있습니다.)

1-2. 적당한 프로젝트 이름을 적은 후, 만들기를 클릭합니다.

Visual Studio 2019 버전 16.11.3에선 에러가 발생하니 프로젝트 이름을 영어대소문자만으로 구성해야 합니다.

1-3. 애플리케이션 종류를 대화 상자 기반으로 변경하고 마침을 클릭합니다.

Visual Studio 2019 버전 16.11.3에서 프로젝트 생성시 다음과 같은 에러가 발생할 수 있습니다.

COM 구성 요소 호출에서 HRESULT E_FAIL 오류가 반환되었습니다.

아래 포스트에 따로 작성한 구글에서 찾아본 방법들을 진행해보았는데도 해결이 안되어 혹시나해서 영어대소문자만으로 프로젝트 이름을 만드니 에러가 안납니다.

확인한 바로는 _ 또는 빈칸을 프로젝트 이름에 추가한 경우 에러가 발생합니다.

Visual Studio 2019 16.11.3에서 MFC 프로젝트 생성시 “COM 구성 요소 호출에서 HRESULT E_FAIL 오류가 반환되었습니다” 에러 발생

https://webnautes.tistory.com/1539

1-3. 툴바의 솔루션 플랫폼을 x64로 변경합니다.

1-4. 다음 포스팅을 참고하여 프로젝트에 OpenCV 관련 설정을 추가합니다. 9 ~ 19번을 진행하면 됩니다.

Visual Studio 2017/2019에서 OpenCV 4.5.3를 사용하는 방법

http://webnautes.tistory.com/1132

2. UI 구성

OpenCV에서 캡쳐한 영상이 보여질 영역이 필요합니다.

2-1. 아래 스크린샷에 보이는 리소스 뷰의 다이얼로그를 더블 클릭합니다.

리소스 뷰가 보이지 않으면 메뉴에서 보기 > 다른 창 > 리소스 뷰 또는 보기 > 리소스 뷰 를 선택하세요.

같은 비주얼 스튜디오 2017이라도 업데이트 정도에 따라 다르군요..

2-2. 우선 다이얼로그에 있는 모든 구성요소를 제거하세요.

그리고나서 도구 상자를 클릭 후 Picture Control을 드래그하여 다이얼로그에 추가합니다.

2-3. Picture Control을 배치한 결과입니다.

2-4. 다이얼로그 위에 있는 Picture Control을 선택한 상태에서 마우스 우클릭하여 보이는 메뉴에서 속성을 클릭합니다.

ID를 IDC_PICTURE로 수정하고 엔터를 눌러 변경합니다.

Ctrl + S를 눌러서 저장합니다.

2-5. 다시 다이얼로그 위에 있는 Picture Control을 선택하고 마우스 오른쪽 버튼을 클릭하여 메뉴에서 변수 추가를 선택합니다.

제어 변수 추가 창의 이름 항목에 m_picture를 입력하고 마침을 클릭합니다.

버전 차이로 다음처럼 보일 수 도 있습니다.

3. OpenCV 관련 코드 추가

3-1. Ctrl + Shift + X를 눌러서 클래스 마법사를 실행합니다.

3-2. 클래스 이름을 COpenGLwithMFCDlg로 변경합니다. 끝부분이 Dlg인 것을 선택하면 됩니다.

메시지 탭을 선택하고 리스트에서 WM_DESTROY를 선택 후 처리기 추가 버튼을 클릭합니다.

3-3. 같은 방식으로 WM_TIMER도 선택해서 추가하고 확인 버튼을 클릭합니다.

3-4. OpenCVwithMFCDlg.h 파일에 OpenCV 헤더파일을 추가합니다.

#include “opencv2/opencv.hpp”

using namespace cv;

3-5. OpenCVwithMFCDlg.h 파일에 멤버 변수를 추가해줍니다.

VideoCapture *capture;

Mat mat_frame;

CImage cimage_mfc;

3-6. OpenCVwithMFCDlg.cpp 파일의 OnInitDialog 함수에 코드를 추가합니다.

capture = new VideoCapture(0);

if (!capture->isOpened())

{

MessageBox(_T(“웹캠을 열수 없습니다.

“));

}

//웹캠 크기를 320×240으로 지정

capture->set(CAP_PROP_FRAME_WIDTH, 320);

capture->set(CAP_PROP_FRAME_HEIGHT, 240);

SetTimer(1000, 30, NULL);

3-7. OpenCVwithMFCDlg.cpp 파일의 OnTimer 함수에 코드를 추가합니다.

OnTimer 함수에서 영상을 가져온 후 CImage로 변환해서 화면에 출력합니다.

이때 출력되는 화면의 크기는 다이얼로그에 올려둔 picture 컨트롤러의 크기입니다.

void COpenCVwithMFCDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다. //mat_frame가 입력 이미지입니다. capture->read(mat_frame); //이곳에 OpenCV 함수들을 적용합니다. //여기에서는 그레이스케일 이미지로 변환합니다. cvtColor(mat_frame, mat_frame, COLOR_BGR2GRAY); //화면에 보여주기 위한 처리입니다. int bpp = 8 * mat_frame.elemSize(); assert((bpp == 8 || bpp == 24 || bpp == 32)); int padding = 0; //32 bit image is always DWORD aligned because each pixel requires 4 bytes if (bpp < 32) padding = 4 - (mat_frame.cols % 4); if (padding == 4) padding = 0; int border = 0; //32 bit image is always DWORD aligned because each pixel requires 4 bytes if (bpp < 32) { border = 4 - (mat_frame.cols % 4); } Mat mat_temp; if (border > 0 || mat_frame.isContinuous() == false) { // Adding needed columns on the right (max 3 px) cv::copyMakeBorder(mat_frame, mat_temp, 0, 0, 0, border, cv::BORDER_CONSTANT, 0); } else { mat_temp = mat_frame; } RECT r; m_picture.GetClientRect(&r); cv::Size winSize(r.right, r.bottom); cimage_mfc.Create(winSize.width, winSize.height, 24); BITMAPINFO* bitInfo = (BITMAPINFO*)malloc(sizeof(BITMAPINFO) + 256 * sizeof(RGBQUAD)); bitInfo->bmiHeader.biBitCount = bpp; bitInfo->bmiHeader.biWidth = mat_temp.cols; bitInfo->bmiHeader.biHeight = -mat_temp.rows; bitInfo->bmiHeader.biPlanes = 1; bitInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bitInfo->bmiHeader.biCompression = BI_RGB; bitInfo->bmiHeader.biClrImportant = 0; bitInfo->bmiHeader.biClrUsed = 0; bitInfo->bmiHeader.biSizeImage = 0; bitInfo->bmiHeader.biXPelsPerMeter = 0; bitInfo->bmiHeader.biYPelsPerMeter = 0; //그레이스케일 인경우 팔레트가 필요 if (bpp == 8) { RGBQUAD* palette = bitInfo->bmiColors; for (int i = 0; i < 256; i++) { palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i; palette[i].rgbReserved = 0; } } // Image is bigger or smaller than into destination rectangle // we use stretch in full rect if (mat_temp.cols == winSize.width && mat_temp.rows == winSize.height) { // source and destination have same size // transfer memory block // NOTE: the padding border will be shown here. Anyway it will be max 3px width SetDIBitsToDevice(cimage_mfc.GetDC(), //destination rectangle 0, 0, winSize.width, winSize.height, 0, 0, 0, mat_temp.rows, mat_temp.data, bitInfo, DIB_RGB_COLORS); } else { // destination rectangle int destx = 0, desty = 0; int destw = winSize.width; int desth = winSize.height; // rectangle defined on source bitmap // using imgWidth instead of mat_temp.cols will ignore the padding border int imgx = 0, imgy = 0; int imgWidth = mat_temp.cols - border; int imgHeight = mat_temp.rows; StretchDIBits(cimage_mfc.GetDC(), destx, desty, destw, desth, imgx, imgy, imgWidth, imgHeight, mat_temp.data, bitInfo, DIB_RGB_COLORS, SRCCOPY); } HDC dc = ::GetDC(m_picture.m_hWnd); cimage_mfc.BitBlt(dc, 0, 0); ::ReleaseDC(m_picture.m_hWnd, dc); cimage_mfc.ReleaseDC(); cimage_mfc.Destroy(); CDialogEx::OnTimer(nIDEvent); } 4. 실행 결과 4-1. F5키를 눌러서 실행한 결과입니다. 현재 코드는 스크린샷과 달리 흑백으로 보입니다. 3-7에서 다음 코드를 주석처리하면 컬러로 보이게 됩니다. cvtColor(mat_frame, mat_frame, COLOR_BGR2GRAY); 5. 참고 http://stackoverflow.com/a/29006218 http://pklab.net/pagefiles/LoadBmp/PkMatToGDI.hpp https://stackoverflow.com/a/28525365 반응형

So you have finished reading the mfc 영상 처리 예제 topic article, if you find this article useful, please share it. Thank you very much. See more: MFC BITMAPINFOHEADER, StretchDIBits, StretchDIBits 영상 깨짐, C DC, StretchDIBits 확대, SetStretchBltMode

Leave a Comment