opencv1 显示灰度图像时CopyOf函数出错

在highgui.h中如此声明该函数:

    virtual void  CopyOf( CvvImage& image, int desired_color = -1 );
    virtual void  CopyOf( IplImage* img, int desired_color = -1 );

函数有两个参数,其中第二个参数有一默认值,当复制彩色图像时使用默认值即可,但是当使用CopyOf复制灰度图像时就不能使用默认的参数了,应该设为要复制图像的通道数nChannels。实例如下:

1.显示彩色图像

  HDC hDC = pDC->GetSafeHdc();
  if (pDoc->TheImage!=NULL)//TheImage为一彩色图像
  {
   //创建显示图像文件的区域
   CRect rect(0,0,OriginImageDisplayWidth,OriginImageDisplayHeight);
   CImage  img;
   img.CopyOf(pDoc->TheImage);//把Doc文件中的IplImage数据拷贝到CImage
   img.DrawToHDC(hDC,&rect);//进行图像显示
  }

2.显示灰度图像

  HDC hDC2 = pDC->GetSafeHdc();
  if (pDoc->pCannyImg!=NULL)//pCannyImg为一边缘图像(灰度)
  {

    //创建显示图像文件的区域
    CRect rect2(0,0,EdgeImageDisplayWidth,EdgeImageDisplayHeight);
    CImage  img2;
    img2.CopyOf(pDoc->pCannyImg,pDoc->pCannyImg->nChannels);//把Doc文件中的IplImage数据拷贝到CImage
    img2.DrawToHDC(hDC2,&rect2);//进行图像显示

  }

你可能感兴趣的:(image,null)