¾È³çÇϼ¼¿ä opencv¸¦ mfc¿¡¼ ±¸ÇöÇϴ°ÍÀ» °øºÎÇÏ´Ù°¡
¹®Á¦Á¡ÀÌ »ý°Ü ±ÛÀ» ³²±é´Ï´Ù.
À̹ÌÁö ºÒ·¯¿À±â¸¦ ÅëÇØ À̹ÌÁö¸¦ picture control¿¡ ¸®»çÀÌÁîÇØ Ãâ·ÂÀ» Çϸé
¾Æ·¡ »çÁø°ú °°ÀÌ À̹ÌÁö°¡ ±úÁ® ³ª¿É´Ï´Ù.
imshow·Î »õâ¿¡¼ ¿¾îº¸¸é Á¤»óÀûÀÎ À̹ÌÁö°¡ Ãâ·ÂµÇ´Â¹Ý¸é
picture control»ó¿¡¼´Â ±úÁ®¼ º¸À̳׿ä...
°ü·ÃÁ¤º¸¸¦ ã´Ù°¡ ³ª¿ÀÁú ¾Ê¾Æ ±ÛÀ» ¿Ã¸®°Ô µÇ¾ú½À´Ï´Ù.
¾Æ·¡ Çö»ó »çÁø°ú ÄÚµå ÷ºÎÇÕ´Ï´Ù.
ºÁÁּż °¨»çÇÕ´Ï´Ù.
void COpenCVTest1Dlg::OnBnClickedBtnTest()
{
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);
}
}