国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
VC++6.0將數(shù)據(jù)文件圖像化

VC++6.0將數(shù)據(jù)文件圖像化

不同的圖像采集卡所存成的數(shù)據(jù)文件的格式是不同的,有的完全是數(shù)據(jù)的集合(如存成DAT 文件),而有的還要在數(shù)據(jù)前面加一個文件頭。下面就以DAT文件為例說明如何再現(xiàn)圖像。至于帶文件頭的數(shù)據(jù)文件,只要參考圖像采集卡的說明書,把單純的數(shù)據(jù)從文件中讀出來,問題也就迎刃而解了。
      1.將數(shù)據(jù)文件中的數(shù)據(jù)讀到一指針中。

      設(shè)采集圖像的大小為width*height 像素,用8階灰度表示。

    #include “iostream.h"
    #include “fstream.h"
    double *filetobuf=new UINT[width*height];
    fstream infile;
    infile.open(filename,ios::in|ios::binary);
    for(int i=0;i< width*height;i++)
    {
       infile.read((char *) (filetobuf+i),sizeof(UINT));
    }

      這樣就把文件中的數(shù)據(jù)讀到了filetobuf指針中。

      2.利用Windows的API函數(shù) StretchDIBits()顯示圖像。

      StretchDIBits函數(shù)將設(shè)備無關(guān)位圖從原矩形拷貝到目的矩形,如果拷貝位圖與目的矩形大小不適應(yīng),則相應(yīng)地對位圖進(jìn)行擴展或者縮小操作。如果函數(shù)調(diào)用成功,則返回已經(jīng)拷貝的掃描行數(shù)目,否則,函數(shù)返回值為GDI_ERRPR。函數(shù)原形如下:
      int StrechDIBits(HDC hdc,int Xdest, int Ydest,int
    nDestWidth,int nDestHeight,int XSrc,int Ysrc, < brnSrcWidth,int nSrcWidth,
    CONST VOID * lpBits,CONST BITMAPINFO
    pBitsinfo,UINT iUsage,DWORD dwRop)
      其中,參數(shù)hdc 指定目的設(shè)備上下文句柄;參數(shù)Xdest 與Ydest分別以邏輯單位指定目的矩形左上角的X、 Y坐標(biāo);參數(shù)XSrc與YSrc則分別以像素點為單位,指定DIB位圖中源矩形原點的X、Y 坐標(biāo);參數(shù)nDestWidth、nDestHeight分別以邏輯單位指定目的矩形的寬度與高度; nSrcWidth、nSrcHeight分別以邏輯單位指定源矩形的寬度與高度;參數(shù)lpBits指向作為字節(jié)數(shù)組進(jìn)行存儲的DIB位圖位;lpBitsinfo指向BITMAPINFO結(jié)構(gòu);iUsage指定 BITMAPINFO結(jié)構(gòu)中是否存在bmiColor成員;如果存在該成員,則其中提供顏色的顯示RGB 值還是索引值;dwRop指定需要執(zhí)行的光柵操作,它指定如何組合目標(biāo)設(shè)備的當(dāng)前畫刷、

      源位圖以及目的位圖,從而產(chǎn)生新的圖像。

      因此在使用StrechDIBits前要進(jìn)行BITMAPINFOHEADER 對象的定義。

    BITMAPINFOHEADER bmiHeader;
    bmiHeader.biSize =sizeof(BITMAPINFOHEADER);
    bmiHeader.biWidth = width;
    bmiHeader.biHeight = height;
    bmiHeader.biPlanes = 1;
    bmiHeader.biBitCount = 24;
    bmiHeader.biCompression = BI_RGB;
    bmiHeader.biSizeImage = 0;
    bmiHeader.biXPelsPerMeter = 0;
    bmiHeader.biYPelsPerMeter = 0;
    bmiHeader.biClrUsed = 0;
    bmiHeader.biClrImportant = 0;
    int lines = StretchDIBits(theDC->m_hDC,
    0,0,
    bmiHeader.biWidth,
    hmiHeader.biHeight,
    0,0,
    bmiHeader.biWidth,
    bmiHeader.biHeight,
    buf,
    (LPBITMAPINFO)&bmiHeader,
    DIB_RGB_COLORS,
    SRCCOPY);

      buf 應(yīng)為指向真彩色圖像數(shù)據(jù)部分的指針,因此必須對 filetobuf加以轉(zhuǎn)化,把filetobuf對應(yīng)的每個像素的值分別付給buf的R、G、B部分。

    buf=new  UINT[width*height*3];
    for(int i=0;i<width*height;i++)
    {
      *(buf+i*3)=*(filetobuf+i);
      *(buf+i*3+1)=*(filetobuf+i);
      *(buf+i*3+2)=*(filetobuf+i);
    }

      經(jīng)過以上的變換便可以輕松顯示圖像了,注意圖像顯示 完后,要釋放已申請的指針。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
怎樣用VC++實現(xiàn)對24位bmp圖像的打開和顯示(bmp圖片假定放在D盤picture文件夾內(nèi))
Halcon與C++
Visual C++中實現(xiàn)對圖像數(shù)據(jù)的讀取顯示
VC下使用LibTiff處理TIFF文件
位圖文件(BMP)格式分析以及程序?qū)崿F(xiàn)
基于VFW的視頻監(jiān)控系統(tǒng)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服