Programming/OpenCV

[Function] Dialog 창에 IplImage 출력하기

매직블럭 2013. 4. 2. 19:15

전에 어느분 블로그에서 받은 소스인데 간단하게 위치만 수정해서 사용중이다

void C프로젝트명Dlg::displayIplImage(IplImage* pimageIpl, int ww, int hh)
{
 int w,h;
 int nWidth= pimageIpl->width;
 int nHeight = pimageIpl->height;

 BYTE* pSrcBits = (BYTE*)pimageIpl->imageData;
 BYTE* pBmpBits = (BYTE*)calloc(sizeof(BYTE), nWidth*nHeight*4);

 CClientDC dc(this);
 CDC memDC;
 CBitmap newBmp, *pOldBmp;

 for(h=0; h<nHeight; h++)
 {
  BYTE* pSrc = pSrcBits + pimageIpl->widthStep * h;
  BYTE* pDst = pBmpBits + nWidth * 4 * h;
  for(w=0; w<nWidth; w++)
  {
   *(pDst++) = *(pSrc++);
   *(pDst++) = *(pSrc++);
   *(pDst++) = *(pSrc++);
   *(pDst++) = 0;
  }
 }
 memDC.CreateCompatibleDC(&dc);
 newBmp.CreateCompatibleBitmap(&dc, nWidth, nHeight);
 newBmp.SetBitmapBits(nWidth*nHeight*4, pBmpBits);

 pOldBmp = memDC.SelectObject(&newBmp);
 dc.BitBlt(ww,hh,nWidth, nHeight, &memDC, 0, 0, SRCCOPY);
 memDC.SelectObject(pOldBmp);

 free(pBmpBits);
 memDC.DeleteDC();
 newBmp.DeleteObject();
 
}