在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);//进行图像显示
}