• bmp和opencv格式转换


    IplImage * BmpTOIpl(int width,int height,unsigned char  *pBuffer)
    {
        IPlImage 
    *image =cvCreateImage(cvSize(width,height),8,1);
       image
    ->imageData=pBuffer;
       
    return image;
    }





    CDibPtr IplToDib(IplImage 
    *image)
    {
       CDibPtr m_ptrBitmaps;
       CSize ImageSize;
       ImageSize.cx
    =image->width;
       ImageSize.cy
    =image->height;
       m_ptrBitmaps.Create(ImageSize, 
    8, CDib::TopDown, CDib::Monochrome);
      (unsigned 
    char*) m_ptrBitmaps->GetPixels()=image->ImageData;
      
    return m_ptrBitmaps;
    }
    IplImage* hBitmap2Ipl(HBITMAP hBmp) 

    BITMAP bmp; 

    ::GetObject(hBmp,
    sizeof(BITMAP),&bmp); 

    int nChannels = bmp.bmBitsPixel == 1 ? 1 : bmp.bmBitsPixel/8 ; 
    int depth = bmp.bmBitsPixel == 1 ? IPL_DEPTH_1U : IPL_DEPTH_8U; 

    IplImage
    * img = cvCreateImageHeader( cvSize(bmp.bmWidth, bmp.bmHeight) 
    , depth, nChannels ); 

    img
    ->imageData = 
    (
    char*)malloc(bmp.bmHeight*bmp.bmWidth*nChannels*sizeof(char)); 
    memcpy(img
    ->imageData,(char*)(bmp.bmBits),bmp.bmHeight*bmp.bmWidth*nChannels); 

    return img; 
    }
     


    void createDIB(IplImage* &pict)
    IplImage 
    * Red=cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), 
    IPL_DEPTH_8U, 
    1 ); 
    IplImage 
    * Green=cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), 
    IPL_DEPTH_8U, 
    1 ); 
    IplImage 
    * Blue=cvCreateImage( cvSize(IMAGE_WIDTH,IMAGE_HEIGHT), 
    IPL_DEPTH_8U, 
    1 ); 
    cvSetImageCOI( pict, 
    3); 
    cvCopy(pict,Red); 
    cvSetImageCOI( pict, 
    2); 
    cvCopy(pict,Green); 
    cvSetImageCOI(pict, 
    1); 
    cvCopy(pict,Blue); 
    //Initialize the BMP display buffer 
    bmi = (BITMAPINFO*)buffer; 
    bmih 
    = &(bmi->bmiHeader); 
    memset( bmih, 
    0sizeof(*bmih)); 
    bmih
    ->biSize = sizeof(BITMAPINFOHEADER); 
    bmih
    ->biWidth = IMAGE_WIDTH; 
    bmih
    ->biHeight = IMAGE_HEIGHT; // -IMAGE_HEIGHT; 
    bmih->biPlanes = 1
    bmih
    ->biCompression = BI_RGB; 
    bmih
    ->biBitCount = 24
    palette 
    = bmi->bmiColors; 
    forint i = 0; i < 256; i++ )
    palette[i].rgbBlue 
    = palette[i].rgbGreen = palette[i].rgbRed = 
    (BYTE)i; 
    palette[i].rgbReserved 
    = 0
    }
     
    cvReleaseImage(
    &Red); 
    cvReleaseImage(
    &Green); 
    cvReleaseImage(
    &Blue); 
    }
  • 相关阅读:
    windows server 2003打补丁升级后,网站上的aspx页面打不开的解决办法
    为什么IM还有生存空间
    CTO俱乐部深圳:移动互联网发展与趋势 活动分享
    为word文档创建文档结构图的的步骤
    面试官面试总结
    dll与exe通信的VC++程序实例源码
    openfire的集群研究
    如何有效地记忆与学习
    How The Kernel Manages Your Memory
    C语言循环小技巧
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1006338.html
Copyright © 2020-2023  润新知