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

本文介绍了如何使用CopyOf函数正确地复制彩色和灰度图像。对于彩色图像,可以使用默认参数;而对于灰度图像,则需要指定图像的通道数。文中通过具体示例展示了复制过程,并演示了如何将复制后的图像显示在界面上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值