[컴퓨터 비젼] - openCV/MFC를 이용한 영상신호처리
플리케이션 마법사(AppWizard)를 이용하여 영상신호처리 MFC 프로젝트 만들기
일단 MFC가 지원되지 않는다면?
파일 -> 새로 만들기 -> visual studio 설치 관리자 열기
MFC 및 ATL 지원 다운로드!
추가 후 cpp파일에 다음과 같은 코드를 추가한다.
unsigned char *m_InImage;
unsigned char *m_OutImage;
unsigned int height, width;
CMFCtestDoc::CMFCtestDoc()
{
m_InImage = NULL;
m_OutImage = NULL;
width = 0;
height = 0;
}
CMFCtestDoc::~CMFCtestDoc()
{
if (m_InImage != NULL)
delete(m_InImage);
if (m_OutImage != NULL)
delete(m_OutImage);
}
void CMFC_Exp01Doc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: 여기에 저장 코드를 추가합니다.
// 영상처리 후 출력영상 m_OutImage[]를 raw 데이터로 저장
if(width != 0 && height != 0)
{
ar.Write(m_OutImage, width*height);
}
}
else
{
// TODO: 여기에 로딩 코드를 추가합니다.
CString strTemp = ar.m_strFileName.Right(3);
// 영상파일이 RAW로 저장되어 있는 경우
if (toupper( strTemp[ 0 ] ) == 'B' &&
toupper( strTemp[ 1 ] ) == 'M' &&
toupper( strTemp[ 2 ] ) == 'P' )
{
// 입력할 화일의 포인트를 가져옴.
CImage m_Image;
m_Image.Load(ar.m_strFileName);
width = m_Image.GetWidth();
height = m_Image.GetHeight();
m_InImage = (unsigned char*) malloc(sizeof(unsigned char) * width * height);
m_OutImage = (unsigned char*) malloc(sizeof(unsigned char) * width * height);
int ws = width * (m_Image.GetBPP() / 8);
unsigned char *m_tmpImage = (unsigned char*) malloc(sizeof(unsigned char) * ws * height);
if(m_Image.GetBPP() == 1)
{
AfxMessageBox((LPCTSTR)"읽을 수 있는 파일 형식이 아닙니다.");
return;
}
else if(m_Image.GetBPP() == 8)
{
for (int y= 0; y <height; y++){
BYTE * srcImg = NULL; ;
srcImg = (BYTE *) m_Image.GetPixelAddress(0,y);
memcpy(&m_InImage[y * ws], srcImg, ws);
}
}
else if(m_Image.GetBPP() == 24)
{
for (int y= 0; y <height; y++){
BYTE * srcImg = NULL; ;
srcImg = (BYTE *) m_Image.GetPixelAddress(0,y);
memcpy(&m_tmpImage[y * ws], srcImg, ws);
}
int iter = 0;
for(int y=0; y<height; y++)
{
for(int x=0; x<width; x++)
{
m_InImage[(y * width) + x] =
(
m_tmpImage[iter ] * 0.21 +
m_tmpImage[iter + 1] * 0.72 +
m_tmpImage[iter + 2] * 0.07
);
iter += 3;
}
}
}
}
// 입력파일이 BMP파일이 아닌경우
else
{
AfxMessageBox((LPCTSTR)"읽을 수 있는 파일 형식이 아닙니다.");
return;
}
}
}
출력 화면
'끄적끄적_공부' 카테고리의 다른 글
[컴퓨터활용능력1급] - 실기 시험 / 시험 후기 (0) | 2020.05.25 |
---|---|
[컴퓨터 비전] - 가우시안 함수(Gaussian)를 미분한 마스크를 통한 에지검출 (1) | 2020.04.17 |
도메인 이름을 이용해 IP주소 받기 (2) | 2020.04.14 |
[리눅스 환경 설정] - visual studio code/echo (6) | 2020.04.13 |
[컴퓨터 비젼] - MFC/ openCV /히스토그램을 이용한 영상 이진화 처리 (0) | 2020.04.03 |