下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、計(jì)算機(jī)圖像處理技術(shù)前言:隨著計(jì)算機(jī)軟件、硬件技術(shù)的日新月異的發(fā)展和普及,人類已經(jīng)進(jìn)入一個(gè)高速發(fā)展的信息化時(shí)代,人類大概有80%的信息來自圖像,科學(xué)研究、技術(shù)應(yīng)用中圖像處理技術(shù)越來越成為不可缺少的手段。圖像處理所涉及的領(lǐng)域有軍事應(yīng)用、醫(yī)學(xué)診斷、工業(yè)監(jiān)控、物體的自動(dòng)分檢識(shí)別系統(tǒng)等等,這些系統(tǒng)無不需要計(jì)算機(jī)提供實(shí)時(shí)動(dòng)態(tài),效果逼真的圖像?;趫D像采集卡的視頻圖像處理系統(tǒng) 計(jì)算機(jī)圖像處理系統(tǒng)從系統(tǒng)層次上可分為高、中、低檔三個(gè)層次,目前一般比較普及的是低檔次的系統(tǒng),該系統(tǒng)由CCD(攝像頭)、圖像采集卡、計(jì)算機(jī)三個(gè)部分組成,其結(jié)構(gòu)簡單,應(yīng)用方便,效果也比較不錯(cuò),得到的圖像較清晰。目前網(wǎng)上基于VC開發(fā)經(jīng)驗(yàn)的文
2、章不少,可是關(guān)于如何在VC開發(fā)平臺(tái)上使用圖像采集卡的文章確沒發(fā)現(xiàn),筆者針對在科研開發(fā)中積累的使用圖像采集卡經(jīng)驗(yàn),介紹如何自己是如何將采集卡集成到圖像開發(fā)系統(tǒng)中,希望能夠給目前正需要利用圖像采集卡開發(fā)自己的圖像處理系統(tǒng)的朋友有所幫助。 使用的攝像機(jī)采用臺(tái)灣BENTECH INDUSTRIAL 有限公司生產(chǎn)的CV-155L黑白攝像機(jī)。該攝像機(jī)分辨率為752x582。圖象采集卡我們采用北京中科院科技嘉公司開發(fā)的基于PCI 總線的CA-MPE 1000 黑白圖象采集卡。使用圖像采集卡分三步,首先安裝采集卡的驅(qū)動(dòng)程序,并將虛擬驅(qū)動(dòng)文件VxD.vxd拷貝到Windows的SYSTEM目錄下;這時(shí)候就可以進(jìn)
3、入開發(fā)狀態(tài)了,進(jìn)入VC開發(fā)平臺(tái),生成新的項(xiàng)目,由于生產(chǎn)廠家為圖像采集卡提供了以mpew32.dll、mpew32.lib命名的庫文件,庫中提供了初始硬件、采集圖像等函數(shù),為使用這些函數(shù),在新項(xiàng)目上連接該動(dòng)態(tài)庫;最后一步就是采集圖像并顯示處理了,這一步要設(shè)置系統(tǒng)調(diào)色板,因?yàn)椴杉ㄌ峁┑氖锹銏D形式,既純圖像數(shù)據(jù),沒有圖像的規(guī)格和調(diào)色板信息,這些需要開發(fā)者自己規(guī)定實(shí)現(xiàn),下面是實(shí)現(xiàn)的部分代碼: CTestView:CTestView() W32_Init_MPE1000();/初始化采集卡W32_Modify_Contrast(50);/下面的函數(shù)是為了對采集卡進(jìn)行預(yù)設(shè)置W32_Modify_Brig
4、htness(45);/設(shè)置亮度W32_Set_HP_Value(945);/設(shè)置水平采集點(diǎn)數(shù)wCurrent_Frame = 1;/當(dāng)前幀為1,獲取的圖像就是從這幀取得的/ 設(shè)置采集信號(hào)源,僅對MPE1000有效W32_Set_Input_Source(1);W32_CACardParam(AD_SETHPFREQ,hpGrabFreq);W32_Set_PAL_Range(1250, 1024);/設(shè)置水平采集范圍W32_Set_VGA_Mode ( 1 );wGrabWinX1 = 0; / 采集窗口的左上角的坐標(biāo)wGrabWinY1 = 0;firstTime=TRUE;bGrabMo
5、de = FRAME;bZipMode = ZIPPLE; /lpDib=NULL;/存放獲取的圖像數(shù)據(jù) CTestView:CTestView()W32_Close_MPE1000();/關(guān)閉采集卡/顯示采集的圖象,雙擊鼠標(biāo)采集停止void CTestView:OnGraboneframe()/ TODO: Add your command handler code herewCurrent_Frame = 1;/ 設(shè)置采集目標(biāo)為內(nèi)存W32_CACardParam (AD_SETGRABDEST, CA_GRABMEM);/ 啟動(dòng)采集if (lpDib != NULL)GlobalUnloc
6、k( hglbDIB );GlobalFree( hglbDIB );/ 分配內(nèi)存hglbDIB=GlobalAlloc(GHND, (DWORD)wImgWidth*(DWORD)wImgHeight );lpDib = (BYTE *)GlobalLock( hglbDIB );hdc = GetDC()-GetSafeHdc( ) ;if(lpDib != NULL)cxDib = wImgWidth;cyDib = wImgHeight;SetLogicPal( hdc, cxDib, cyDib, 8 ); SetStretchBltMode (hdc, COLORONCOLOR)
7、; bGrabMark = TRUE; while (bGrabMark = TRUE)if(msg.message=WM_LBUTTONDBLCLK)bGrabMark = FALSE; W32_ReadXMS2Buf (wCurrent_Frame,lpDib) ;SetDIBitsToDevice (hdc, 0, 0, cxDib, cyDib, 0, 0,0, cyDib, (LPSTR) lpDib,bmi,DIB_RGB_COLORS) ;/ 停止采集W32_CAStopCapture();:ReleaseDC( GetSafeHwnd(), hdc );return ;/將下面
8、這個(gè)函數(shù)添加在視圖類的CTestView:OnSize()函數(shù)中,就可以對系統(tǒng)的調(diào)色板進(jìn)行設(shè)置。void WINAPI InitLogicPal( HDC hdc , short width, short height, WORD bitCount )int j, i;short cxDib, cyDib;LOGPALETTE * pLogPal; j=256 ; if (pLogPal=(LOGPALETTE *)malloc(sizeof(LOGPALETTE) + (j*sizeof(PALETTEENTRY) = NULL)return ; pLogPal-palVersion=0x3
9、00;pLogPal-palNumEntries=j; for (i=0;i pLogPal-palPalEntryi.peRed = i ;pLogPal-palPalEntryi.peGreen = i ;pLogPal-palPalEntryi.peBlue = i ;pLogPal-palPalEntryi.peFlags = 0; hPal = :CreatePalette(pLogPal);delete pLogPal;:SelectPalette(hdc,hPal,0);:RealizePalette(hdc); cxDib = width; cyDib = height; if
10、 ( (bmi = (BITMAPINFO *)malloc(sizeof(BITMAPINFOHEADER) + j*sizeof(RGBQUAD) = NULL )return ;/bmi為全局變量,用于顯示圖像時(shí)用bmi-bmiHeader.biSize = 40;bmi-bmiHeader.biWidth = cxDib;bmi-bmiHeader.biHeight = cyDib;bmi-bmiHeader.biPlanes = 1 ; bmi-bmiHeader.biBitCount = bitCount ; bmi-bmiHeader.biCompression = 0 ;bmi
11、-bmiHeader.biSizeImage = 0 ;bmi-bmiHeader.biXPelsPerMeter = 0;bmi-bmiHeader.biYPelsPerMeter = 0;bmi-bmiHeader.biClrUsed = 0;bmi-bmiHeader.biClrImportant = 0; for (i=0;i bmi-bmiColorsi.rgbBlue = i ;bmi-bmiColorsi.rgbGreen = i ;bmi-bmiColorsi.rgbRed = i ;bmi-bmiColorsi.rgbReserved = 0 ; 視頻畫中畫技術(shù) 畫中畫這個(gè)概
12、念類似與彩色電視機(jī)畫中畫,就是在一幅大的圖像內(nèi)顯示另外一幅內(nèi)容不同的小的圖像,小圖像的尺寸大小一般地說為大圖像尺寸的1/4或1/9,顯示位置在大圖像的右上角。這種技術(shù)不僅在電視技術(shù)中,在可視電話系統(tǒng)也可以發(fā)現(xiàn)這種技術(shù)的身影,它們都是依靠硬件來實(shí)現(xiàn)的,但是如何在VC開發(fā)平臺(tái)上用編程語言來將該功能添加到自己開發(fā)的視頻監(jiān)控軟件,為使用者提供更大的信息量呢?也許讀者最容易想到的是首先顯示大圖像,然后再在一個(gè)固定位置畫第二幅小圖像,這種技術(shù)技術(shù)如果對于靜止圖像當(dāng)然沒有問題,但是對于視頻流,由于每一秒鐘需要畫25?,即25幅圖像,這樣一來計(jì)算機(jī)需要不停的畫不停的擦除,會(huì)給用戶以閃爍的感覺,如何解決這個(gè)問題
13、呢?有的參考書上將大小圖像分快顯示,這種方法要將待顯示的圖像數(shù)據(jù)與顯示位置的關(guān)系對應(yīng)起來,容易出錯(cuò)不說,而且麻煩,且速度慢,為此,我對該方法進(jìn)行了改進(jìn),得到了滿意的效果。實(shí)現(xiàn)的代碼如下: void pictureinpicture( ).CBitmap bitmap,*oldmap;pData1=(BYTE*)new charbiWidth*biHeight *3;/biWidth和biHeight為視頻采集卡獲取/的圖像尺寸。Read(pData1,bih.biWidth*bih.biHeight *3);/該函數(shù)從采集卡中獲取數(shù)據(jù)CClientDC dc(this);m_pBMI1= ne
14、w BITMAPINFO;/自定義的BMP文件信息結(jié)構(gòu),用于后面的圖像顯示m_pBMI1-bmiHeader.biBitCount=24;m_pBMI1-bmiHeader.biClrImportant=0;m_pBMI1-bmiHeader.biClrUsed=0;m_pBMI1-bmiHeader.biCompression=0;m_pBMI1-bmiHeader.biHeight=biHeight;m_pBMI1-bmiHeader.biPlanes=1;m_pBMI1-bmiHeader.biSize=40;m_pBMI1-bmiHeader.biSizeImage=WIDTHBYTE
15、S(biWidth*8)*biHeight*3;m_pBMI1-bmiHeader.biWidth=biWidth;m_pBMI1-bmiHeader.biXPelsPerMeter=0;m_pBMI1-bmiHeader.biYPelsPerMeter=0;/pData2=(BYTE*)new charbiWidth1*biHeight1 *3;/申請存放小圖像的緩沖區(qū)Read(pData2,biWidth1*biHeight1 *3);/向該緩沖區(qū)讀數(shù)據(jù)m_pBMI2= new BITMAPINFO;m_pBMI2-bmiHeader.biBitCount=24;m_pBMI2-bmiHe
16、ader.biClrImportant=0;m_pBMI2-bmiHeader.biClrUsed=0;m_pBMI2-bmiHeader.biCompression=0;m_pBMI2-bmiHeader.biHeight=biHeight1;m_pBMI2-bmiHeader.biPlanes=1;m_pBMI2-bmiHeader.biSize=40;m_pBMI2-bmiHeader.biSizeImage=WIDTHBYTES(biWidth1*8)*biHeight1*3;m_pBMI2-bmiHeader.biWidth=biWidth1;m_pBMI2-bmiHeader.bi
17、XPelsPerMeter=0;m_pBMI2-bmiHeader.biYPelsPerMeter=0;/下面實(shí)現(xiàn)畫中畫的顯示 CDC MemDc;MemDc.CreateCompatibleDC(&dc);bitmap.CreateCompatibleBitmap(&dc,biWidth,biHeight);oldmap=MemDc.SelectObject(&bitmap);:StretchDIBits(MemDc.m_hDC,0,0,biWidth,biHeight,0,0,biWidth,biHeight,pData1,m_pBMI1,DIB_RGB_COLORS,SRCCOPY);/首先將大圖像畫在內(nèi)寸上下文中 :StretchDIBits(MemDc.m_hDC,20,20,biWidth1,biHeight1,_0,0,biW
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四氟丙醇項(xiàng)目融資渠道探索
- 飛機(jī)盒項(xiàng)目融資渠道探索
- 二零二五年度蘋果產(chǎn)品線上線下融合營銷合同3篇
- 二零二五年度城市停車場土方開挖與停車管理系統(tǒng)合同
- 二零二五年度夫妻共同債務(wù)償還及財(cái)產(chǎn)管理保證協(xié)議范本3篇
- 房屋和土木工程服務(wù)項(xiàng)目融資渠道探索
- 二零二五年度土地租賃權(quán)轉(zhuǎn)讓協(xié)議示范文本
- 二零二五年度節(jié)能環(huán)保固定資產(chǎn)借款合同模板3篇
- 二零二五年度碼頭配套設(shè)施建設(shè)與維護(hù)合同3篇
- 2025至2030年中國超脈沖CO2激光美容儀數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年春季學(xué)期學(xué)校德育工作計(jì)劃安排表(完整版)
- 2025年有機(jī)肥行業(yè)發(fā)展趨勢分析報(bào)告
- 2023-2024年員工三級安全培訓(xùn)考試題及參考答案(綜合題)
- 2024年人教版初中英語九年級全冊單元測評與答案
- 【渞法】學(xué)會(huì)自我保護(hù)教學(xué)設(shè)計(jì) 七年級道德與法治下冊(統(tǒng)編版2024)
- 2025-2030年中國融雪劑行業(yè)運(yùn)行動(dòng)態(tài)及發(fā)展前景預(yù)測報(bào)告
- 五年級口算題卡每天100題帶答案
- 2024年全國初中數(shù)學(xué)聯(lián)合競賽試題參考答案及評分標(biāo)準(zhǔn)
- 《地下工程測試技術(shù)》課程教學(xué)大綱
- 2023-2024學(xué)年天津市小學(xué)數(shù)學(xué)二年級上冊期末高分試卷
- 工程造價(jià)績效考核KPI指標(biāo)庫
評論
0/150
提交評論