999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于文件搜索功能的圖像融合程序?qū)崿F(xiàn)

2014-08-21 14:10:44何源
科技與創(chuàng)新 2014年11期

摘 要:針對(duì)現(xiàn)有的圖像融合軟件在讀入大量圖像并進(jìn)行重復(fù)操作時(shí)不能實(shí)現(xiàn)批量自動(dòng)化操作的問題,提出了使用文件搜索功能來改變現(xiàn)狀的方法。分析了MFC類庫中文件讀寫和文件搜索的相關(guān)函數(shù),討論了各函數(shù)的功能和所需要傳遞的參數(shù)。利用MFC類庫的文件讀寫和文件搜索的相關(guān)函數(shù),設(shè)計(jì)出了高效、自動(dòng)傳遞并讀寫數(shù)據(jù)的圖像融合程序。該程序節(jié)省了用戶進(jìn)行大量重復(fù)性工作的時(shí)間。實(shí)驗(yàn)證明,該程序性能良好,并且用戶友好度較高。

關(guān)鍵詞:文件搜索;MFC;CFileFind;應(yīng)用程序

中圖分類號(hào):TP391.41 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-6835(2014)11-0126-02

在開發(fā)Windows應(yīng)用程序時(shí),常常要將搜索程序應(yīng)用到相關(guān)文件中。假如應(yīng)用程序沒有自動(dòng)搜索文件的功能,就需要用戶手動(dòng),一個(gè)一個(gè)地選擇文件并進(jìn)行相關(guān)操作,這樣不僅費(fèi)時(shí)費(fèi)力、用戶友好度極低,而且在工作量較大的情況下,難免會(huì)出現(xiàn)操作失誤的情況,影響用戶的工作效率。微軟基礎(chǔ)類庫封裝了大量的Windows API函數(shù),其中就包含文件搜索的相關(guān)函數(shù),為應(yīng)用程序開發(fā)者提供了便利的條件。

1 MFC類庫及程序使用的相關(guān)函數(shù)介紹

微軟基礎(chǔ)類庫(Microsoft Foundation Classes Library),簡(jiǎn)稱MFC,是微軟公司在C++編程語言的基礎(chǔ)上實(shí)現(xiàn)的一個(gè)基礎(chǔ)類庫,它是一種面向?qū)ο蟮暮瘮?shù)庫。在這個(gè)類庫中,封裝了Windows操作系統(tǒng)關(guān)于窗口式用戶接口的基礎(chǔ)函數(shù),這樣程序開發(fā)者就不必再編寫大量復(fù)雜的窗口響應(yīng)實(shí)現(xiàn)代碼,只需編寫具體功能實(shí)現(xiàn)程序即可。這樣做免去了大量繁重的重復(fù)性工作,使得基于Windows操作系統(tǒng)的應(yīng)用程序開發(fā)變得簡(jiǎn)單、快捷,大大縮短了程序開發(fā)的周期。

MFC搭建了一個(gè)應(yīng)用程序框架,我們需要做的只是根據(jù)具體的應(yīng)用場(chǎng)景選擇合適的框架,并且為框架填充具有實(shí)際用途的內(nèi)容。同時(shí),MFC還為我們提供了很多輔助資源,例如向?qū)АD標(biāo)、位圖等,讓開發(fā)者可以編寫出用戶友好度較高的界面接口應(yīng)用程序。

MFC類庫奉行單繼承的風(fēng)格,所以,其所有的類都繼承自一個(gè)唯一的根類,即CObject。CFile類繼承自CObject類,是以二進(jìn)制的方式讀取和寫入文件的類。CFile類封裝了Win32環(huán)境下的文件創(chuàng)建、文件讀寫等文件操作相關(guān)函數(shù)。CFile類的主要方法有:①CFile,一個(gè)路徑和文件句柄構(gòu)造一個(gè)CFile對(duì)象;②Read,將文件讀取到一塊緩存上;③Write,將緩存中的數(shù)據(jù)寫入指定文件中等。

文中用到的函數(shù)主要有以下兩種。

1.1 文件類構(gòu)造函數(shù)CStdioFile

文件類構(gòu)造函數(shù)CStdioFile(LPCTSTR lpszFileName,UINT nOpenFlags),其中,第一個(gè)參數(shù)為創(chuàng)建文件的文件名,第二個(gè)參數(shù)則為文件打開模式。常用的模式有4種:①CFile::modeRead以只讀的方式打開;②CFile::modeWrite則以可寫的方式打開;③CFile::modeReadWrite以讀寫方式打開;④CFile::modeCreate創(chuàng)建并打開。以上模式均可組合使用,并用“|”相互隔開。

1.2 CArchive::Write

CArchive::Write(const void* lpBuf,UINT nMax),向文件中寫入字符串,參數(shù)1是一個(gè)向用戶提供緩存的指針,該緩存包含需要寫入文件中的數(shù)據(jù);參數(shù)2為一個(gè)無符號(hào)的整數(shù),用于表示寫入數(shù)據(jù)的字節(jié)數(shù)。

CFileFind類是MFC中用作搜索文件的類。CFileFind類不但可用于搜索本地文件,也可以用于搜索網(wǎng)絡(luò)文件。通過向其傳遞文件名和文件路徑等參數(shù),即可實(shí)現(xiàn)文件的搜索功能。CFileFind類的主要方法有以下4種:①CFileFind,構(gòu)造CFliefind對(duì)象;②GetFileName,可以獲取搜索到帶有擴(kuò)展名的相關(guān)文件;③GetFilePath,可以獲取搜索到的文件的路徑;④FindNextFile,繼續(xù)先前的搜索調(diào)用等。

本文文件搜索功能主要是基于CFile和CFileFind兩個(gè)基類實(shí)現(xiàn)的。

2 基于文件搜索功能的圖像融合程序

2.1 設(shè)計(jì)思路

該程序是通過調(diào)用控制臺(tái)應(yīng)用程序enblend,利用enblend自帶的圖像融合功能,對(duì)兩幅或兩幅以上的圖像進(jìn)行融合。圖像融合不是本文的討論重點(diǎn),所以不在此贅述,有興趣的讀者可以查閱相關(guān)資料。

調(diào)用一個(gè)控制臺(tái)應(yīng)用程序的方法有很多,比如,在VC 中直接通過調(diào)用函數(shù)實(shí)現(xiàn),但是,這種方法在需要傳遞復(fù)雜參數(shù)或數(shù)據(jù)量較大的情況下,會(huì)出現(xiàn)調(diào)用失敗或者運(yùn)行時(shí)間過長的情況,甚至?xí)驗(yàn)檎加锰鄡?nèi)存而出現(xiàn)系統(tǒng)崩潰的狀況,使得簡(jiǎn)單問題復(fù)雜化。最簡(jiǎn)單的調(diào)用方法就是新建一個(gè)bat批處理文件,通過運(yùn)行批處理文件達(dá)到調(diào)用控制臺(tái)程序的目的。這種方法方便、快捷,在處理大量數(shù)據(jù)時(shí)尤為高效,但是,每次調(diào)用都需要手動(dòng)重新編寫批處理文件,費(fèi)事費(fèi)力而且容易出錯(cuò)。因此,現(xiàn)在的問題就轉(zhuǎn)變?yōu)槿绾卧O(shè)計(jì)一個(gè)用戶界面,讓用戶只需要點(diǎn)擊鼠標(biāo)即可完成創(chuàng)建bat文件并調(diào)用控制臺(tái)程序的過程。

2.2 實(shí)現(xiàn)流程

該程序的開發(fā)環(huán)境為Visual C++ 6.0,利用MFC創(chuàng)建一個(gè)對(duì)話框應(yīng)用程序,通過點(diǎn)擊對(duì)話框按鈕實(shí)現(xiàn)此程序的功能。

要實(shí)現(xiàn)程序功能的具體做法是:新建一個(gè)MFC AppWizard工程文件,文件名可以取為“FindImg”,選擇基本對(duì)話框應(yīng)用程序類型,點(diǎn)擊完成。在生成的對(duì)話框界面上,新建一個(gè)編輯框和兩個(gè)按鈕,兩個(gè)按鈕的名稱分別修改為“選擇文件夾”“融合圖像”。編輯框用于顯示所選取文件夾的路徑;“選擇文件夾”按鈕用于選取圖像所在的文件夾,并搜索該文件夾下的所有圖片文件,然后將其寫入bat文件;“融合圖像”按鈕用于運(yùn)行bat文件,調(diào)用enblend對(duì)圖像進(jìn)行融合。endprint

搜素圖片文件功能的實(shí)現(xiàn)的步驟是雙擊“選擇文件夾”按鈕,添加代碼如下(//后為對(duì)該行代碼的解釋):

void CDfsDlg::OnSlectFile()

{ CString str;

char m_ImageDir[512];

CString m_Path;

CFileFind find;

CStdioFile file("find.bat",CFile::modeCreate|CFile::mod eReadWrite);

//新建一個(gè)文件名為“find”的bat文件,文件模式為讀寫;

file.Write("cd \\enblend所在文件夾路徑\n",strlen("cd \\enblend所在文件夾路徑\\n"));

//在bat文件中寫入數(shù)據(jù),調(diào)用enblend控制臺(tái)程序;

BROWSEINFO bi;//創(chuàng)建選擇文件夾對(duì)話框;

TCHAR name[MAX_PATH];

name[0]='d';

ZeroMemory(&bi,sizeof(BROWSEINFO));

bi.hwndOwner=GetSafeHwnd();

bi.pszDisplayName=name;

bi.lpszTitle=_T("Select folder");//設(shè)置選擇文件夾對(duì)話框的標(biāo)題;

bi.ulFlags=0x80;

LPITEMIDLIST idl=SHBrowseForFolder(&bi);

if(idl==NULL)

return;

SHGetPathFromIDList(idl,str.GetBuffer(MAX_PATH));

str.ReleaseBuffer();

m_Path=str;

if(str.GetAt(str.GetLength()-1)!='\\')

m_Path+="\\";

UpdateData(FALSE);

Memcpy(m_ImageDir,m_Path,m_Path.GetLength());//獲取文件夾路徑字串;

m_ImageDir[m_Path.GetLength()]='\0';//字串一定要以\0結(jié)尾,否則程序會(huì)報(bào)錯(cuò);

SetDlgItemText(IDC_LUJING, m_ImageDir);//將文件夾路徑顯示到編輯框中;

strcat(m_ImageDir,"*.tif");

//由于enblend只能讀取tif格式的圖像,所以,程序要搜索該文件夾所有tif格式的圖像;

bool finded;

finded=find.FindFile(m_ImageDir);

while(finded)

//如果直接將FindFile的返回值作為判斷條件的話,不僅搜索結(jié)果會(huì)少1個(gè)圖片文件,而且當(dāng)文件夾內(nèi)沒有圖片時(shí),程序也會(huì)出錯(cuò);

{ finded=find.FindNextFile();

CString text=find.GetFileName();

text+="\n";

file.Write(text,text.GetLength());}

file.Write("\npause",strlen("\npause"));//把查找到的結(jié)果寫入bat文件內(nèi);

MessageBox(“輸入圖片成功!”);

//數(shù)據(jù)成功寫入bat文件,彈出消息框,提示用戶圖像輸入成功;

file.Close();//程序運(yùn)行結(jié)束,清理內(nèi)存中的文件;}

調(diào)用控制臺(tái)應(yīng)用程序?qū)崿F(xiàn)的步驟是雙擊“圖像融合”按鈕,添加點(diǎn)擊按鈕的事件響應(yīng)代碼,具體情況如下:

void CDfsDlg::OnBlendImg()

{ WinExec("..\\FindImg \\find.bat",SW_SHOWNORMAL);

//用WInExec函數(shù)調(diào)用bat,從而達(dá)到運(yùn)行enblend程序融合圖像的目的;}

編寫完以上全部源代碼后,便可以編譯運(yùn)行程序,點(diǎn)擊“選擇文件夾”按鈕便可以搜索獲取任意文件夾下的所有圖片,并將其傳遞給enblend圖像融合程序。點(diǎn)擊“圖像融合”按鈕,便可調(diào)用enblend程序完成圖像融合的過程。實(shí)驗(yàn)證明,該程序操作簡(jiǎn)單,運(yùn)行性能良好,在數(shù)據(jù)量較大的情況下,運(yùn)行速度依然較快。

3 總結(jié)

本文著重討論了基于文件搜索功能下圖像融合程序的實(shí)現(xiàn)過程,事實(shí)上,基于文件搜索功能可以實(shí)現(xiàn)很多具有其他功能的程序,文中的圖像融合只是其中一個(gè)方面的應(yīng)用。因?yàn)榻^大多數(shù)的應(yīng)用程序都需要讀入文件數(shù)據(jù)來實(shí)現(xiàn)自身的實(shí)際功能,文件搜索功能可以實(shí)現(xiàn)程序讀入文件數(shù)據(jù)的自動(dòng)化,極大地提高了應(yīng)用程序的工作效率和用戶友好度,所以說,該程序值得開發(fā)者廣泛應(yīng)用。

參考文獻(xiàn)

[1]宋坤,劉銳寧,李偉明.MFC程序開發(fā)參考大全[M].北京:人民郵電出版社,2007.

————————

作者簡(jiǎn)介:何源(1990—),男,現(xiàn)就讀于山西農(nóng)業(yè)大學(xué),主要從事資源環(huán)境遙感方面的研究。

〔編輯:白潔〕endprint

主站蜘蛛池模板: 国产精品一区不卡| 黄片在线永久| 尤物亚洲最大AV无码网站| 色有码无码视频| 日韩AV无码免费一二三区| 国产簧片免费在线播放| 欧美激情,国产精品| 黄色网址手机国内免费在线观看| 亚洲视频三级| 国产一区二区三区免费观看| 国产99久久亚洲综合精品西瓜tv| 亚洲国产成人麻豆精品| 國產尤物AV尤物在線觀看| 91无码人妻精品一区二区蜜桃| 在线观看热码亚洲av每日更新| 中文字幕永久在线看| 福利视频久久| 国产精品xxx| 国产一区二区精品福利| 浮力影院国产第一页| 啪啪国产视频| 中文字幕无码电影| 国产精品久久久精品三级| 亚洲综合激情另类专区| 一级香蕉人体视频| 国产视频自拍一区| 久久综合一个色综合网| 亚洲色图另类| 精品成人免费自拍视频| 欧美精品影院| 色哟哟精品无码网站在线播放视频| 日韩国产另类| 亚洲人成人无码www| 久久9966精品国产免费| 日韩欧美国产综合| 婷婷丁香在线观看| 白丝美女办公室高潮喷水视频| 免费av一区二区三区在线| 国产色婷婷视频在线观看| 99热线精品大全在线观看| 五月天天天色| 国产精品理论片| 在线观看视频99| 国产一区二区网站| 日韩无码视频专区| 91丝袜乱伦| 国产成人在线小视频| 日韩专区欧美| 制服丝袜在线视频香蕉| 国产情侣一区二区三区| 欧美成人精品欧美一级乱黄| 亚洲欧美自拍中文| 国产乱人伦偷精品视频AAA| 永久在线精品免费视频观看| 亚洲精品无码不卡在线播放| 九色综合视频网| 国产福利影院在线观看| 激情午夜婷婷| 国产美女91呻吟求| 亚洲男人天堂网址| 麻豆AV网站免费进入| 国产精品久久久久久久久久98| 免费一看一级毛片| 亚洲黄色视频在线观看一区| 一级香蕉人体视频| 精品视频第一页| 中文字幕天无码久久精品视频免费| 欧美一区二区自偷自拍视频| 欧美日韩一区二区三区四区在线观看| av在线无码浏览| 亚洲欧美激情另类| 男人的天堂久久精品激情| 亚洲第一成年人网站| 国产高潮视频在线观看| 欧美成人国产| 热久久综合这里只有精品电影| 国产精品永久不卡免费视频| 一本大道无码高清| 久久精品国产电影| 美女无遮挡拍拍拍免费视频| 一本大道无码高清| 97在线观看视频免费|