zoukankan      html  css  js  c++  java
  • 利用Opencv在PictureControl中显示照片

    利用Opencv在PictureControl中显示IplImage格式的照片。

    bool MyDlg::IfExistFile(CString strFilePath)
    {
        CFile file;
        if (file.Open(strFilePath,CFile::modeRead))
        {
            file.Close();
            return true;
        }
        return false;
    }
    
    bool MyDlg::FillBlankToPicCtrl(const int& nID)
    {
        CDC *pDC = GetDlgItem(nID)->GetDC();
        CRect rect;
        GetDlgItem(nID) ->GetClientRect( &rect );
        pDC->FillSolidRect(rect, GetSysColor(COLOR_ACTIVEBORDER));//填充当前背景色
        ReleaseDC(pDC);
        
        return true;
    }
    
    void MyDlg::ShowIplImage(IplImage* img, const int& nID)
    {
        BITMAPINFO bifInfo;
        int nBpp = img ? (img->depth & 255) * img->nChannels : 0 ;
        FillBitmapInfo(&bifInfo, img->width, img->height, nBpp);
        ShowImageInWindow(img, GetDlgItem(nID), bifInfo);
    }
    
    void MyDlg::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;
            }
        }
    }
    
    void MyDlg::ShowImageInWindow(IplImage *pImg, CWnd *wnd, BITMAPINFO &bmi)
    {
        CDC *pDC = wnd->GetDC();
        HDC  hDC = pDC->GetSafeHdc();
        CRect rect;
        wnd->GetClientRect(&rect);
        if(bmi.bmiHeader.biBitCount== 8)
        {
            CPalette pal;
            HPALETTE hpal=NULL;
            HPALETTE hOldPal=NULL;
            ::SetPaletteEntries(hpal,0,256,(LPPALETTEENTRY)bmi.bmiColors);
            hOldPal = ::SelectPalette(pDC->GetSafeHdc(), hpal, TRUE);
        }
        ::SetStretchBltMode(pDC->m_hDC, COLORONCOLOR);
        ::StretchDIBits(pDC->GetSafeHdc(),rect.left,rect.top,pImg->width,pImg->height,0,0,
            pImg->width,pImg->height,pImg->imageData,&bmi,DIB_RGB_COLORS,SRCCOPY);
        ReleaseDC(pDC);
    }
  • 相关阅读:
    ecshop学习1
    ecshop安装
    PHP文本操作
    tornado入门1
    windows下WAMP php5.x redis扩展
    Linux下php安装Redis扩展
    在Linux上安装SVN服务
    Application runtime path "/opt/lampp/htdocs/yii/test/protected/runtime" is not valid. 错误
    CDbConnection failed to open the DB connection: could not find driver错误的处理
    PHP框架 Yii framework 用yiic命令时提示“php.exe”不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/autumoonchina/p/4280822.html
Copyright © 2011-2022 走看看