freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于vc的圖像特效顯示研究_畢業(yè)設(shè)計(jì)(編輯修改稿)

2024-08-15 09:18 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 Microsoft Visual C++ 環(huán)境 Visual C++ ,簡(jiǎn)稱 VC 或者 , 是 微軟 推出的一款 C++編譯器 ,將“高級(jí)語(yǔ)言”翻譯為“ 機(jī)器語(yǔ)言 (低級(jí)語(yǔ)言)”的程序。 Visual C++是一個(gè)功能強(qiáng)大的可視化 軟件開(kāi)發(fā)工具 。自 1993 年 Microsoft 公司推出 Visual C++ 后,隨著其新版本的不斷問(wèn)世, Visual C++已成為專業(yè) 程序員 進(jìn)行 軟件 開(kāi)發(fā)的首選工具。雖然微軟公司推出了 Visual 基于 VC++的圖像特效顯示研究 7 C++.NET(Visual C++),但它的應(yīng)用有很大的局限性,只適用于Windows 20xx、 Windows XP 和 Windows 。所以實(shí)際中,更多的是以 Visual C++ 為平臺(tái)。 MFC 簡(jiǎn)介 微軟 基礎(chǔ)類 (Microsoft Foundation Classes),同 VCL 類似,是一種應(yīng)用程序框架,隨微軟 Visual C++開(kāi)發(fā)工具發(fā)布。目前最新版本為 (截止 20xx 年 3 月),并且發(fā)布了中文版。該類庫(kù)提供一組通用的可重用的類庫(kù)供開(kāi)發(fā)人員使用,大部分類均從 CObject 直接或間接 派生 ,只有少部分類例外。 MFC 實(shí)際上是微軟提供的,用于在 C++環(huán)境下編寫應(yīng)用程序的一個(gè)框架和 引擎 。 VC++是 Windows 下開(kāi)發(fā)人員使用的專業(yè) C++ SDK(SDK,Standard SoftWare Develop Kit,專業(yè) 軟件 開(kāi)發(fā)平臺(tái) ), MFC 就是掛在它之上的一個(gè)輔助軟件開(kāi)發(fā)包。 MFC 作為與VC++血肉相連的部分 (注意 C++和 VC++的區(qū)別: C++是一種 程序設(shè)計(jì)語(yǔ)言 ,是一種大家都承認(rèn)的軟件編制的通用規(guī)范;而 VC++只是一個(gè) 編譯器 ,或者說(shuō)是一種編譯器 +源程序 編輯器 的 IDE( IDE 的英文全稱為“ Integrated Development Environment”,即“集成開(kāi)發(fā)環(huán)境”。 ), WSPlatForm,這跟 Pascal 和 Delphi 的關(guān)系一個(gè)道理。 Pascal是 Delphi 的語(yǔ)言基礎(chǔ), Delphi 使用 Pascal 規(guī) 范來(lái)進(jìn)行 Win 下應(yīng)用程序的開(kāi)發(fā)和編譯,卻不同于 Basic 語(yǔ)言和 VB 的關(guān)系。 Basic 語(yǔ)言在 VB 開(kāi)發(fā)出來(lái)被應(yīng)用的年代已經(jīng)成了 Basic 語(yǔ)言的新規(guī)范, VB 新加的 Basic 語(yǔ)言要素,如 面向?qū)ο蟪绦蛟O(shè)計(jì) 的要素,是一種性質(zhì)上的飛躍,使 VB 既是一個(gè) IDE,又成長(zhǎng)成一個(gè)新的程序設(shè)計(jì)語(yǔ)言 )。 MFC 同 VC++集成的 VCL 一樣是一個(gè)非外掛式的 軟件包 類庫(kù),只不過(guò) MFC 類是微軟為 VC++專配的。 圖形設(shè)備接口 、 GDI 對(duì)象 以往許多 MSDOS 程序采用直接向視頻存儲(chǔ)區(qū)或打印機(jī)端口輸送數(shù)據(jù),這種做法不利之處是需要各種顯示卡 (低分辨率彩色圖形顯示卡、加強(qiáng)圖形顯示卡、圖像圖形陣列以及 VGA)或打印機(jī)驅(qū)動(dòng)程序,支持所有這些設(shè)備意味著要用大量的編程來(lái)包含這些驅(qū)動(dòng)程序 (為每一 基于 VC++的圖像特效顯示研究 8 個(gè)設(shè)備編定不同的代碼 )。為了減輕開(kāi)發(fā)程序的難度, Windows 提供了一個(gè)抽象的接口,圖形 設(shè)備接口 Graphics Device Interface(GDI)。 另外Windows 還提供了各種顯示卡及打印機(jī)的驅(qū)動(dòng)程序,這樣在寫程序時(shí)就可以不必關(guān)心顯示卡和打印機(jī)的類型,簡(jiǎn)化了程序開(kāi)發(fā)的難度。 GDI 是個(gè)抽象的概念, GDI 接口是微軟公司提供的一組繪圖函數(shù),通常稱之為 GDI 函數(shù),使用這些函數(shù)可以繪制各種圖形。 MFC 類庫(kù)對(duì) GDI函數(shù)進(jìn)行封裝,將其封裝為不同的 GDI 對(duì)象,采用 GDI 對(duì)象進(jìn)一步簡(jiǎn)化了圖形、圖像處理程序的開(kāi)發(fā)難度。 常用到的 GDI 對(duì)象有: : 筆是一種用來(lái)畫線及繪制有形邊框的工 具,可以指定它的顏色及厚度,并且可以指定它畫實(shí)線、點(diǎn)線或虛線; : 刷子定義了一種位圖形式的像素,利用它可對(duì)區(qū)域內(nèi)部填充顏色; : 位圖是一種位矩陣,每一個(gè)顯示像素都對(duì)應(yīng)于其中的一個(gè)或多個(gè)位。可以利用位圖來(lái)表示圖像,也可以利用它來(lái)創(chuàng)建刷子; : 區(qū)域是由多邊形、橢圓或二者組合形成的一種范圍,可以利用它來(lái)填充、裁剪以及鼠標(biāo)點(diǎn)中測(cè)試; : 字體是一種具有某種風(fēng)格和尺寸的所有字符的完整集合,它常常被當(dāng)作資源存于磁盤中,其中有一些還 依賴于某種設(shè)備; : 調(diào)色板是一種顏色映射接口,它允許應(yīng)用程序在不干擾其他應(yīng)用程序的前提下,充分利用輸出設(shè)備的顏色描繪能力。 OpenCV 的簡(jiǎn)介 OpenCV 概述 penCV 于 1999 年由 Intel 建立,如今由 Willow Garage 提供支持。OpenCV 是一個(gè)基于(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在 Linux、 Windows 和 Mac OS 操作系統(tǒng)上。它輕量級(jí)而且高效 ——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時(shí)提供了 Python、 Ruby、MATLAB 等語(yǔ)言的接口,實(shí)現(xiàn)了 圖像處理 和計(jì)算機(jī)視覺(jué)方面的很多 基于 VC++的圖像特效顯示研究 9 通用算法。 OpenCV 擁有包括 300 多個(gè) C 函數(shù)的跨平臺(tái)的中、高層 API。它不依賴于其它的外部庫(kù) —— 盡管也可以使用某些外部庫(kù)。 OpenCV 為 Intel Integrated Performance Primitives (IPP) 提供了透明接口。 這意味著如果有為特定處理器優(yōu)化的的 IPP 庫(kù), OpenCV 將在運(yùn)行時(shí)自動(dòng)加載這些庫(kù)。 OpenCV 的特點(diǎn) 計(jì)算機(jī)視覺(jué)市場(chǎng)巨大而且持續(xù)增長(zhǎng),且這方面沒(méi)有標(biāo)準(zhǔn) API,如今的計(jì)算機(jī)視覺(jué) 軟件 大概有以下三種: (慢,不穩(wěn)定,獨(dú)立并與其他庫(kù)不兼容) (比如 Halcon, MATLAB+Simulink) (比如 視頻監(jiān)控 ,制造 控制系統(tǒng) ,醫(yī)療設(shè)備 ) ,這是如今的現(xiàn)狀。而 標(biāo)準(zhǔn)的 API 將簡(jiǎn)化計(jì)算機(jī)視覺(jué)程序和解決方案的開(kāi)發(fā)。 OpenCV 致力于成為這樣的標(biāo)準(zhǔn) API。 OpenCV 致力于真實(shí)世界的實(shí)時(shí)應(yīng)用,通過(guò)優(yōu)化的 C 代碼的編寫對(duì)其執(zhí)行速度帶來(lái)了可觀的提升,并且可以通過(guò)購(gòu)買 Intel 的 IPP 高性能多媒體函數(shù)庫(kù) (Integrated Performance Primitives)得到更快的處理速度。右圖為 OpenCV 與當(dāng)前其他主流視覺(jué)函數(shù)庫(kù)的性能比較。 基于 VC++的圖像特效顯示研究 10 3 常見(jiàn)的圖像特效顯示 本章主要研究了目前比較流行的圖像特效顯示中的 柵條顯示、 馬賽克顯示、移動(dòng)顯示特效和百葉 窗顯示特效的效果,分析其實(shí)用性并對(duì)相關(guān)算法進(jìn)行優(yōu)化改進(jìn)。 顯示特效方法理論概述 特效顯示基礎(chǔ) 掃描顯示圖像是最基本的特效顯示方法,可以分為上下左右四個(gè)方向的掃描顯示,對(duì)于向下的顯示它表現(xiàn)為圖像一行一行的從最頂端開(kāi)始顯示圖像直到整個(gè)圖像顯示出來(lái),效果有點(diǎn)像拉幕布的感覺(jué) 。 圖像顯示特效主要包括顯示和擦出兩大部分。顯示特效就是利用特效將圖像顯示在屏幕上的過(guò)程,而擦出是顯示的逆過(guò)程 —— 利用特效將圖像還原為背景色。特效實(shí)現(xiàn)的原理是圖像分塊顯示,簡(jiǎn)單說(shuō)來(lái),就是將圖像分成不同的小塊,按照一定的方向、順序 先后顯示在屏幕上。 顯示特效過(guò)程 其實(shí)現(xiàn)方法為:取圖像最上面一行像素點(diǎn)顯示出來(lái),再加上時(shí)間延遲,再取剩下的圖像部分中的最上面一行,如此循環(huán),直至整個(gè)加載入設(shè)備內(nèi)存中的圖像顯示完成。顯示特效的整個(gè)過(guò)程如圖 : 基于 VC++的圖像特效顯示研究 11 圖 顯示特效的過(guò)程 顯示特效類 其關(guān)鍵實(shí)現(xiàn)代碼如下: int SleepTime=20。 int temp=10。 for(UINT y=0。y。y+=1) { thisStretchBlt(IncX, IncY+y, //顯示在設(shè)備上的起點(diǎn) x,y坐標(biāo) ,temp, //顯示在設(shè)備上的寬度和高度 amp。dc, //源位圖設(shè)備情境對(duì)象 0, y, //提取源位圖中顯示區(qū)起點(diǎn) x,y坐標(biāo) 基于 VC++的圖像特效顯示研究 12 ,1,//提取源位圖像素寬高 SRCCOPY)。顯示模式 Sleep(SleepTime)。//時(shí)間延遲 SleepTime 默認(rèn)為 20 } 柵條顯示 柵條顯示特效的特效預(yù)覽 柵條 顯示特效的特效如圖 所示: 圖 柵條 顯示運(yùn)行效果圖 基本原理和實(shí)現(xiàn)方法 柵條顯示即交錯(cuò)顯示。垂直交錯(cuò)效果表現(xiàn)為:設(shè)備上端下端各出現(xiàn)一幅由橫向線條組成的圖像相對(duì)移動(dòng),直至兩圖像剛好重疊成一幅完整清晰的圖 像。 其實(shí)現(xiàn)方法為:分別取待顯示位圖的奇數(shù)行和偶數(shù)行做為向上和向下的兩幅圖,分別向上和向下移動(dòng),直至顯示到待定的位置,此時(shí)兩圖剛好組合成一幅完整的圖像。柵條顯示的基本原理如表 : 基于 VC++的圖像特效顯示研究 13 表 編程實(shí)現(xiàn) 類別 說(shuō)明 圖像分塊 將圖像按照一定寬度分成橫向的圖像塊。圖像塊的編號(hào)從上到下分別為 3......n 顯示順序 編號(hào)為奇數(shù)的圖像塊從左向右移動(dòng),編號(hào)為偶數(shù)的圖像塊從右向左移動(dòng) 顯示方法 ① 將 編號(hào)為技術(shù)的圖像塊向左移動(dòng)距離 i,所有編號(hào)為偶數(shù)的圖像塊向右移動(dòng)距離 i。 ② 延時(shí) ③ 如果 i 不等于 nWidth,則使 i 加 1,重復(fù)步驟 ① 柵條實(shí)現(xiàn)代碼如下: int i,j。 int buf=1。//柵條的高度 取奇數(shù)跟偶數(shù)號(hào)行時(shí)用 1 int SleepTime=10。//時(shí)間延遲 int low_height=(*buf)。 int temp_height= (*2)*buf。 //當(dāng) buf!=1 時(shí) 取偶數(shù)根 buf 高度像素條后剩下的最小高度 //用于放置在最下面到最后顯示出來(lái) 使不影響整體效果 if(low_height0) thisStretchBlt(IncX,IncY+, low_height, amp。dc,0,0,low_height,SRCCOPY), Sleep(speed*buf)。//對(duì)上面提及的 low_height 高度像素條區(qū)域置圖像 for(i=1。i=。i++){ for(j=i。j=1。j) { thisStretchBlt(IncX,IncY+(j1)*2*buf,buf, amp。dc, 基于 VC++的圖像特效顯示研究 14 0,()*2*buf+(j1)*2*buf,buf,SRCCOPY)。 thisStretchBlt(IncX,IncY+temp_height(2*j1)*buf,buf, amp。dc, 0,(ij)*2*buf+buf,buf,SRCCOPY)。 //對(duì)上下出現(xiàn)的柵條進(jìn)行相對(duì)移動(dòng) } thisStretchBlt(IncX,IncY+, ,low_height, amp。dc, 0,i*2*buf,low_height,SRCCOPY)。 //對(duì)由于 buf!=1 時(shí)產(chǎn)生的圖像最后空隙進(jìn)行填補(bǔ) //填補(bǔ)的高度與上面的 buf 不同 Sleep(SleepTime*buf)。 } thisBitBlt(IncX,IncY,amp。dc,0,0,SRCCOPY)。 //對(duì)整個(gè)圖像顯示的最后一次產(chǎn)生的空隙進(jìn)行填補(bǔ) 馬賽克顯示特效 馬賽克顯示特效的特效預(yù)覽 馬賽克顯示特效如圖 所示 : 基于 VC++的圖像特效顯示研究 15 圖 馬賽克特效顯示運(yùn)行效果圖 基本原理和實(shí)現(xiàn)方法 就用 RGB 來(lái)舉例子, R( red 紅色), G( green 綠色), B( blue藍(lán)色)。這三種顏色每種都有 0~255 范圍內(nèi)的強(qiáng)度值,數(shù)字越高越亮,例如,亮紅色使用 R 值 25 G 值 0 和 B 值 0,有色光可被無(wú)色光沖淡并變亮。如藍(lán)色光與白光相遇,結(jié)果是產(chǎn)生更加明亮的淺藍(lán)色光。所以 R、 G、 B的值的不同來(lái)混合顏色。例如一張圖片,他們當(dāng)中是有很多不同顏色的小色塊的,由于這些色塊的像素非常非常的小而且密密麻麻的,而打馬賽克就是圈出一個(gè)范圍( 小色塊為整數(shù)的范圍,所以一般都用長(zhǎng)方形或正方形去圈),把在圈內(nèi)的小色塊的 R 值全加
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1