opencv--打开图像

从网上找的例程,但是用了之后发现打开一幅图像,完了再打开第二副的时候只覆盖掉第一副,而第一副没被覆盖掉的地方还是显示着的!

 IplImage* pImg;
   CString strPathName;
   CFileDialog dlg(TRUE);
   CDC* pDC = this->GetDC();
   CRect rect;
   this->GetClientRect(&rect);
   if(dlg.DoModal()==IDOK)
   {
      strPathName = dlg.GetPathName();

      pImg = cvLoadImage(strPathName);
      BITMAPINFO bmi;
      FillBitmapInfo(&bmi,pImg->width,pImg->height,(pImg->depth)*(pImg->nChannels));   
      
      ::StretchDIBits(pDC->GetSafeHdc(),rect.left,rect.top,pImg->width,pImg->height,0,0,pImg->width,pImg->height,pImg->imageData,&bmi,DIB_RGB_COLORS,SRCCOPY);
   }

 

void COpenCV_SVDDlg::FillBitmapInfo(BITMAPINFO *bmi, int width, int height, int bpp)
{
   ASSERT( bmi && width > 0 && height > 0 &&
      (bpp == 8 || bpp == 24 || bpp == 32) );
   
    BITMAPINFOHEADER* bmih = &(bmi->bmiHeader);
   
    memset( bmih, 0, sizeof(*bmih));
    bmih->biSize   = sizeof(BITMAPINFOHEADER);
    bmih->biWidth  = width;
    bmih->biHeight = -abs(height);
    bmih->biPlanes = 1;
    bmih->biBitCount = bpp;
    bmih->biCompression = BI_RGB;
   
    if( bpp == 8 )
    {
        RGBQUAD* palette = bmi->bmiColors;
        int i;
        for( i = 0; i < 256; i++ )
        {
            palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = (BYTE)i;
            palette[i].rgbReserved = 0;
        }
    }

}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用OpenCV-Python(cv2)加载和显示图像时,如果图片显示为空白,可能是以下几个原因: 1. 图像路径错误:检查你提供的图像文件路径是否正确,确保文件存在并且可以被读取。 2. 图像格式不支持:OpenCV默认支持常见的BMP、JPEG、PNG等格式,如果你的图像不是这些格式,可能需要安装额外的库来处理。 3. 编码问题:某些编码类型的图像可能会导致问题,你可以尝试先用`imdecode()`方法解码图像。 4. 显示问题:确认你在显示图像之前是否进行了正确的转换,如灰度图或BGR转RGB。 5. 图像数据损坏:极少数情况下,图像文件本身可能已损坏,无法正常读取。 为了解决这个问题,你可以尝试以下步骤: - 使用`cv2.imread()`或`cv2.VideoCapture()`加载图像,根据异常处理可能存在的问题。 - 确保`imshow()`函数的参数是一个可显示的图像,例如如果是彩色图像,通常需要调用`cv2.cvtColor()`转换为BGR模式。 - 使用`cv2.imshow('image', img)`显示图像,记得最后加上`cv2.waitKey(0)`暂停程序直到用户关闭窗口。 ```python import cv2 # 加载图像 img = cv2.imread('your_image_path.jpg') # 如果是灰度图像,转换为BGR if len(img.shape) == 2: img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) # 显示图像 cv2.imshow('Image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 如果以上操作后仍然显示空白,请提供更具体的代码片段以便进一步诊断。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值