堯 燕
(深圳職業(yè)技術(shù)學(xué)院 機電工程學(xué)院, 深圳 518055)
?
基于OpenCV多源圖像的整合研究
堯 燕
(深圳職業(yè)技術(shù)學(xué)院 機電工程學(xué)院, 深圳 518055)
圖像因為不同的應(yīng)用需求有不同的數(shù)據(jù)格式,同一系統(tǒng)中對不同源的圖像數(shù)據(jù)分析是較困難的.OpenCV的開源性及可擴展性為基于圖像的軟件系統(tǒng)提供了較好的整合方案.在研究了OpenCV的特性和配置方法后,利用OpenCV,為多源圖像的整合提供了簡單可行的方法.
OpenCV;多源圖像;整合;機器視覺
多媒體技術(shù)的出現(xiàn)為計算機深入日常娛樂提供了豐富的內(nèi)容,聲音和圖像為多媒體的核心內(nèi)容.圖像因為各種原因有不同的格式,有較常見的JPG、BMP、DIB和PNG等,以及其它特殊的格式如TGA、TIFF、RAS及PSD等.它們展現(xiàn)在用戶面前的視覺效果區(qū)別不大,但是圖像格式卻是各有不同.軟件系統(tǒng)讀取圖像時,需要分別分析各種圖像的頭數(shù)據(jù)和及其對應(yīng)的編碼格式,然后采用不同的解碼方法呈現(xiàn)在用戶前面.因此,程序員需要了解各種圖像文件的頭數(shù)據(jù)和編碼格式,增加了程序員的難度[1].OpenCV為程序員提供了通用的接口,具有高效的圖像處理算法,為以圖像為基礎(chǔ)的機器視覺處理軟件提供了強大的基礎(chǔ),可以為多圖像源的整合提供很好的支持.
OpenCV(Open Source Computer Vision Library)是一個開源的圖像處理算法庫,它包含了一系列的C函數(shù)和C++類,實現(xiàn)了圖像處理和計算機視覺方面的很多通用的算法.它不需要依賴外部的庫,因而可以直接應(yīng)用于很多領(lǐng)域,作為二次開發(fā)的理想工具[2].它具有以下特點:
(1)跨平臺:可以運行在Windows、Linux及其它嵌入式操作系統(tǒng)中,獨立于硬件;
(2)免費:它的源代碼是開放的,任何公司或個人都可以用它進行商業(yè)或非商業(yè)開發(fā);
(3)可擴展性好:它包括了底層和高層的應(yīng)用開發(fā)包;
(4)通用的模塊構(gòu)成:有CxCore和Cv等,使用方便.
安裝好OpenCV后,需要對其進行編程環(huán)境的配置[3].
首先設(shè)置電腦操作系統(tǒng)的變量.Windows操作系統(tǒng)方法如下:右擊我的電腦,依次選擇屬性->高級->環(huán)境變量->path->C:Program FilesOpenCVin.結(jié)果如圖1所示.
圖1 設(shè)置系統(tǒng)變量
為了防止編譯系統(tǒng)每次都把相關(guān)的CPP文件復(fù)制到編譯的工程下,設(shè)置編譯系統(tǒng)的全局變量.以Microsoft Visual Studio 2005為例,選擇菜單工具->選項->項目與解決方案,首先設(shè)置庫文件的路徑:C:Program FilesOpenCVlib,如圖2所示.
圖2 庫文件的設(shè)置
然后設(shè)置包含文件的路徑:
C:Program FilesOpenCVcxcoreinclude C:Program FilesOpenCVcvinclude
C:Program FilesOpenCVcvauxinclude C:Program FilesOpenCVotherlibshighgui
C:Program FilesOpenCVmlinclude C:Program FilesOpenCVotherlibscvcaminclude
結(jié)果如圖3所示.
圖3 包含文件的設(shè)置
最后再設(shè)置源文件的路徑:
C:Program FilesOpenCVcvsrc C:Program FilesOpenCVcvauxsrc
C:Program FilesOpenCVcxcoresrc C:Program FilesOpenCVmlsrc
C:Program FilesOpenCVotherlibscvcamsrc
結(jié)果如圖4所示.
圖4 源文件的設(shè)置
因為項目編譯需要用到OpenCV的庫文件,所以建立好項目后,選擇該項目的屬性-> 配置屬性-> 連接器->輸入->附加依賴項中添加:cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib等庫.這樣就可以配置好OpenCV,充分利用OpenCV強大的圖像處理能力為二次開發(fā)提供幫助.
機器視覺系統(tǒng)的第一步一般就是讀取各種源的圖像,然后對圖像進行二值化、邊緣提取及腐蝕等操作.圖像因為源的不同會有各種不同的格式,如較常見的JPG、BMP、DIB和PNG等,以及其它特殊的格式如TGA、TIFF、RAS及PSD等.逐個分析圖像的頭文件及其對應(yīng)的壓縮編碼方式是極其復(fù)雜的,充分利用OpenCV的強大功能可以整合各種不同源的圖像數(shù)據(jù)[4].
OpenCV的圖像類IplImage為圖像數(shù)據(jù)的創(chuàng)建和處理提供了容器,可以采用cvCreateImage()函數(shù)生成圖像,也可以采用cvLoadImage()讀取已經(jīng)有的圖像.要使用該類,先定義它,如:IplImage* img,然后把圖像讀取并賦予它,下面為讀取圖像的代碼片段.
void CMy22Doc::Load()
{
if(img != NULL)
cvReleaseImage(&img); //如果img有數(shù)據(jù),釋放該數(shù)據(jù)
img = cvLoadImage(m_sCurrFile, -1); //讀取數(shù)據(jù)到img
imgSrc = cvLoadImage(m_sCurrFile, -1); //讀取數(shù)據(jù)到imgSrc備份居中用
CRect rect;
CFrameWnd *pFrame=(CFrameWnd*)AfxGetMainWnd();
pFrame->GetActiveView()->GetClientRect(&rect);
float y = (float)rect.Height() / imgSrc->height;
float x = (float)rect.Width() / imgSrc->width;
float ratio = x < y ? x: y;
if(ratio < 1)
ZoomEx(ratio, imgSrc, &img); //重新生成居中的圖像
}
然后用img.Show(pDC->m_hDC, x, y, pDoc->img->width, pDoc->img->height, 0, 0)的方法在Windows窗口中顯示出來[5].
在多媒體技術(shù)中,圖像的多樣性適應(yīng)了不同的應(yīng)用環(huán)境,但多樣的格式卻為程序的處理帶來了不便.OpenCV采用開放性以及跨平臺的模塊化操作模式,為基于圖像的機器視覺系統(tǒng)二次開發(fā)提供了方便.其對多源圖像的整合,以及在其基礎(chǔ)上進行圖像形體學(xué)的處理,對快速開發(fā)提供了強大的支持,因而值得深入研究.
[1] 吳仰玉,紀(jì) 峰,常 霞,等.圖像融合研究新進展 [J]. 科技創(chuàng)新導(dǎo)報,2013(1):49-52.
[2] 黎 寧,張文娜.基于NSCT變換的多源圖像融合并行算法[J]. 計算機與數(shù)字工程,2012(8):104-106.
[3] 滕 俊,王弟林,文漢云.基于OpenCV下的Visual C++數(shù)字圖像處理方法[J].現(xiàn)代計算機,2012(4):70-73.
[4] 秦小文,余紅英.基于OpenCV的圖像分割[J]. 科技信息,2011(14):43-44.
[5] 黃文明,徐錦法.基于機器視覺的通孔元器件檢驗[J].中國科技博覽,2013(13):289-290.
Study of Integration Multisource Images Based on OpenCV
YAO Yan
(School of Mechanical and Electrical Engineering,Shenzhen Polytechnic, Shenzhen 518055, China)
Because the demands of different applications, images have different formats. And it is difficult to analyze multisource images in a system. OpenCV is useful to integrate multisource images because it is open source and extendibility. After analyzing the features of OpenCV, a feasible way to integrate multisource images is put forward based on it.
OpenCV; multisource image;integration; machine vision
2014-11-12
中國高等職業(yè)技術(shù)教育研究會研究項目(GZYLX1213350);深圳教育學(xué)會研究項目(ZD-2011006).
堯 燕(1976-),男,碩士,講師,研究方向:CAD及科學(xué)計算可視化.
TP391
A
1671-119X(2015)02-0059-03