OPENCV Show IplImage on MFC Window

/***********************************************
*功能:在當前窗口中顯示IplImage的圖像
*輸入參數:src  指向圖片的指針
*輸出參數:無
*返回值:無
*做者:張建成
***********************************************/
void ShowImage(IplImage *src)
{  
 if(src->nChannels==3)// color
 {  
    TheImage=cvCloneImage(src);
    IplImage *TheImage = src;
    CvSize ImgSize;
    ImgSize.width = TheImage->width;
    ImgSize.height = TheImage->height;
    CClientDC dc(this);
    CDC * pDC = &dc;
    int res = StretchDIBits(pDC->GetSafeHdc(), 0, 0,int(TheImage->width),int(TheImage->height),
                      0, 0, TheImage->width, TheImage->height, TheImage->imageData,
       (BITMAPINFO*)bmi, DIB_RGB_COLORS,SRCCOPY);
   }
else
 {
   if(src->nChannels==1)// gray
   {   
    IplImage *grayImg=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,3);
    IplImage * planes[3] ={0,0,0};
    for(int i=0;i<3;i++)
       {
         planes[i] = cvCreateImage(cvSize(src->width,src->height),8,1);
        (planes[i]->imageData)= (src->imageData);
    }
    cvCvtPlaneToPix(planes[0],planes[1],planes[2],0,grayImg);
    IplImage * TheImage=cvCloneImage(grayImg);
    CvSize ImgSize;
    ImgSize.width = TheImage->width;
    ImgSize.height = TheImage->height;
    CClientDC dc(this);
    CDC * pDC = &dc;
 
    int res = StretchDIBits(pDC->GetSafeHdc(),0,0,int(TheImage->width),int(TheImage->height),
                      0,0,TheImage->width,TheImage->height,TheImage->imageData,
       (BITMAPINFO*)bmi,DIB_RGB_COLORS,SRCCOPY);
   }
 }
}
相關文章
相關標籤/搜索