¾È³çÇϼ¼¿ä opencv¸¦ mfc¿¡¼ ±¸ÇöÇϴ°ÍÀ» °øºÎÇÏ´Ù°¡
¹®Á¦Á¡ÀÌ »ý°Ü ±ÛÀ» ³²±é´Ï´Ù.
À̹ÌÁö ºÒ·¯¿À±â¸¦ ÅëÇØ À̹ÌÁö¸¦ picture control¿¡ ¸®»çÀÌÁîÇØ Ãâ·ÂÀ» Çϸé
¾Æ·¡ »çÁø°ú °°ÀÌ À̹ÌÁö°¡ ±úÁ® ³ª¿É´Ï´Ù.
imshow·Î »õâ¿¡¼ ¿¾îº¸¸é Á¤»óÀûÀÎ À̹ÌÁö°¡ Ãâ·ÂµÇ´Â¹Ý¸é
picture control»ó¿¡¼´Â ±úÁ®¼ º¸À̳׿ä...
°ü·ÃÁ¤º¸¸¦ ã´Ù°¡ ³ª¿ÀÁú ¾Ê¾Æ ±ÛÀ» ¿Ã¸®°Ô µÇ¾ú½À´Ï´Ù.
¾Æ·¡ Çö»ó »çÁø°ú ÄÚµå ÷ºÎÇÕ´Ï´Ù.
ºÁÁּż °¨»çÇÕ´Ï´Ù.
void COpenCVTest1Dlg::OnBncl ickedBtnTest£¨£©
{
char szFilter[] = "Image £¨*.BMP, *.GIF, *.JPG, *.PNG£© | *.BMP;*.GIF;*.JPG;*.PNG;*.bmp;*.gif;*.jpg;*.png | All Files£¨*.*£©|*.*||";
CFileDialog dlg£¨TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, AfxGetMainWnd£¨£©£©;
if £¨dlg.DoModal£¨£© == IDOK£©
{
cstrtargetPath1 = dlg.GetPathName£¨£©;
src1 = imread£¨string£¨cstrtargetPath1£©£©;
// resize image
Size dSize;
dSize.width = m_src1.cols;
dSize.height = m_src1.rows;
resize£¨src1, m_src1, dSize, 0, 0, INTER_LINEAR£©;
imshow£¨"Test2", m_src1£©;
// Mat to Bitmap
HDC hdc = GetDlgItem£¨IDC_PIC_TEST£©->GetDC£¨£©->m_hDC;
char m_chBmpBuf[2048];
BITMAPINFO *m_pBmpInfo = 0;
m_pBmpInfo = £¨BITMAPINFO *£©m_chBmpBuf;
m_pBmpInfo->bmiHeader.biSize = sizeof£¨BITMAPINFOHEADER£©;
m_pBmpInfo->bmiHeader.biWidth = m_src1.cols;
m_pBmpInfo->bmiHeader.biHeight = -£¨m_src1.rows£©; // -¸¦ ³ÖÁö ¾ÊÀ¸¸é xÃàÀÌ ¹ÝÀüµÇ¾î µð½ºÇ÷¹ÀÌ µÈ´Ù. À̹ÌÁö´Â Á¤»óÀûÀ̹ǷΠ°ÆÁ¤ÇÏÁö ¸»ÀÚ.
m_pBmpInfo->bmiHeader.biBitCount = 24;
m_pBmpInfo->bmiHeader.biPlanes = 1;
m_pBmpInfo->bmiHeader.biCompression = BI_RGB;
m_pBmpInfo->bmiHeader.biSizeImage = 0;
m_pBmpInfo->bmiHeader.biXPelsPerMeter = 0;
m_pBmpInfo->bmiHeader.biYPelsPerMeter = 0;
m_pBmpInfo->bmiHeader.biClrUsed = 0;
m_pBmpInfo->bmiHeader.biClrImportant = 0;
StretchDIBits£¨hdc, 0, 0, m_src1.cols, m_src1.rows,
0, 0, m_src1.cols, m_src1.rows,
m_src1.data, m_pBmpInfo,
DIB_RGB_COLORS, SRCCOPY£©;
Invalidate£¨FALSE£©;
}
}