zoukankan      html  css  js  c++  java
  • 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); 
    }
  • 相关阅读:
    C#中的委托,匿名方法和Lambda表达式
    模式化窗口问题![window.dialogArguments]
    js动态改变HiddenField值,后台不能获取值的问题
    将DataTable进行分页并生成新的DataTable
    出错提示为:该行已经属于另一个表 的解决方法
    如何在服务器端获得showModalDialog传递的参数
    Synchronized和SyncRoot与 集合类 的同步
    Oracle中数据出现####的问题
    如何防止多次提交按钮造成重复提交
    Invoke and BeginInvoke
  • 原文地址:https://www.cnblogs.com/wqj1212/p/1006338.html
Copyright © 2011-2022 走看看