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

基于人像識別的圖片處理App的設(shè)計與實現(xiàn)

2021-04-13 08:46:36陳昊天劉雪飛王碩珩羅凱鴻段棟梁吳靖文
電腦知識與技術(shù) 2021年5期

陳昊天 劉雪飛 王碩珩 羅凱鴻 段棟梁 吳靖文

摘要:為了使用戶獲得更加專業(yè)的人像處理支持,并且提供更加智能、便捷的人像圖片操作功能,實現(xiàn)了基于一些特定的人像情景的人像深度處理軟件。該軟件使用Android studio進(jìn)行開發(fā),使用OpenCV和OpenGL實現(xiàn)人像五官的細(xì)化處理、人像的補(bǔ)強(qiáng)裝飾、區(qū)域渲染、離屏渲染等,實現(xiàn)了一個擁有完整布局、人機(jī)交互友好,具有針對人像進(jìn)行美化、裝飾功能的軟件。

關(guān)鍵詞:Android;OpenCV;OpenGL

1 背景

隨著經(jīng)濟(jì)的發(fā)展和人民生活水平的進(jìn)一步提高,人們對于休閑娛樂的質(zhì)量需求也在日益提高,無論是在微信朋友圈,QQ空間還是微博,隨處可見臉部精美、五官端正的人像照片。目前,各大社交軟件,例如QQ、微信等都自帶簡易的圖片處理功能,然而,這些軟件都不能對人像進(jìn)行復(fù)雜處理或者進(jìn)行二次加工以提高圖片輸出的質(zhì)量。另外,PS等專業(yè)軟件進(jìn)行圖片處理對使用者的要求又比較高。即使市場上已有大量諸如此類的圖片處理軟件,如美圖秀秀、VSCO等,但大部分已上市的app在一些功能方面仍然具有局限性,不能完全滿足使用者的個性化需求。因此,開發(fā)一個可滿足用戶個性化需求的圖像處理軟件很有必要。

本文實現(xiàn)了一款人像深度處理app,本軟件能根據(jù)用戶的個性化需求,對于一張未經(jīng)處理的圖片,在使用本軟件進(jìn)行個性化處理后,呈現(xiàn)出自然、美觀的效果。并且給用戶提供更加智能、便捷的圖片操作過程,操作過程簡潔明了,只需幾步便可完成復(fù)雜的操作,對于圖片處理不太擅長的用戶,還提供了方案市場這一功能,使用已經(jīng)預(yù)留好的方案,一鍵即可完成人像處理。而那些精通圖片處理的用戶,也可以將自己設(shè)計的方案上傳至方案市場,供其他用戶使用。

2 核心技術(shù)概述

2.1 OpenGL ES

OpenGL ES(OpenGL for Embeded System)是OpenGL(Open Graphics Library)的精簡子集,是以手持和嵌入式設(shè)備為目標(biāo)的高級3D圖形API,如現(xiàn)在火爆的智能手機(jī),支持桌面系統(tǒng),還是瀏覽器3D圖形標(biāo)準(zhǔn)WebGL[1]的基礎(chǔ),支持多個平臺,如桌面端的Linux、Windows,移動端的Android、iOS等。

開發(fā)者可以使用Android自帶的OpenGL ES實現(xiàn)創(chuàng)建二維或者三維圖形,以及對圖片進(jìn)行渲染的功能。現(xiàn)在大多數(shù)用的是OpenGL ES2.0[2],較第一個版本增加特殊的效果,能利用最新的硬件所提供的優(yōu)勢。通過OpenGL ES,將圖片進(jìn)行著色器渲染。

2.2 OpenCV

OpenCV作為一款開源的計算機(jī)視覺框架,封裝了超過1000個常見的圖像處理算法,其SDK語言支持Java、C++、Python等。借助OpenCV提供的SDK,Android開發(fā)可以實現(xiàn)圖像處理、識別、關(guān)鍵點定位、實時視頻分析與處理等移動端應(yīng)用開發(fā)。

對于人像處理,要實現(xiàn)對皮膚細(xì)節(jié)的模糊,保留眼睛、鼻子、嘴等部分,通過OpenCV識別這些關(guān)鍵點[3],用OpenGL ES著色器渲染,將對應(yīng)點映射過去,實現(xiàn)離屏渲染。

3 軟件界面設(shè)計

3.1 基本界面布局

對于軟件界面的設(shè)計,使用activity,一共設(shè)計6個界面,分別為主界面、圖片處理界面、選擇方案界面、自定義方案界面、簡易方案界面和設(shè)置界面。每個activity包含了用xml編寫的前端界面和用Java編寫的后端代碼。

3.2 前端界面設(shè)計

主界面樣式如圖1所示。

先是要選擇處理的文件類型。視頻擬定在下一步改善功能時添加,這里先預(yù)留好入口。主頁用來實現(xiàn)核心功能,方案市場提供了一個用戶自由免費分享方案碼的場所。所謂方案碼,是一種儲存每次生成人像方案的一串不規(guī)則字符,每個用戶都可以使用這一個方案碼生成同一種方案供自己使用。

簡易方案界面樣式如圖2所示。

簡易方案界面擬設(shè)定一屏幕的按鈕,每個按鈕代表了一個簡易功能,包括打馬賽克、濾鏡、翻轉(zhuǎn)等功能,用戶可以選擇一個或多個功能進(jìn)行組合,達(dá)到自己想要的效果。相對于自定義方案,選擇簡易方案對于那些修圖要求不高的用戶來說可以大大節(jié)省時間成本而獲得一個較為滿意的結(jié)果。

4 基于OpenCV和OpenGL渲染實現(xiàn)

4.1 環(huán)境搭建

軟件開發(fā)基于Android Studio,android自帶OpenGL ES,所以不需要另外下載,只需要調(diào)用android的OpenGL庫。而OpenCV需要額外配置,大致步驟為將OpenCV的Android版本導(dǎo)入到工程中,之后在Modules選項中,將其中的OpenCVLibrary420的Sdk version和tools version改為和app中的Sdk version和tools version相同的版本。配置完之后,將下載好的OpenCV中的兩個文件復(fù)制到工程中。通過JNI配置OpenCV環(huán)境。

4.2 渲染機(jī)制

圖3為OpenGL渲染[4]的流程線。UI對象使用CPU處理為多維圖形與紋理,然后通過OpenGL ES調(diào)用GPU,使用GPU對圖形進(jìn)行光柵化[5],之后開始繪制渲染后的圖形,渲染完成后再屏幕顯示。

OpenGL通過GLSurfaceView類,將結(jié)果直接顯示到屏幕,在頂點里進(jìn)行紋理的操作,通過片源著色器渲染,可以看到效果。實際中有很多情況并不需要渲染到屏幕上,這個時候使用幀緩沖對象(FBO)就可以很方便地實現(xiàn)這類需求。幀緩沖對象可以讓渲染不渲染到屏幕上,而是渲染到離屏Buffer中,在FBO中進(jìn)行特效的描述。將每種效果寫到單獨的一個類,并且在屏幕顯示之前的所有效果都不需要顯示到屏幕中,在屏幕顯示之前都將其使用幀緩沖對象進(jìn)行緩存[6]。

4.3 進(jìn)行渲染繪制的原理

OpenGL的顯示效果通過一個攝像頭進(jìn)行,根據(jù)攝像頭的不同位置和坐標(biāo),會呈現(xiàn)出不同的效果。下面的圖4至圖7展示了部分本軟件使用的技術(shù)的原理。

通過OpenGL進(jìn)行渲染的模板如圖4和圖5所示。在Java層聲明OpenGL世界坐標(biāo)中的頂點數(shù)據(jù),將頂點著色器實例化到OpenGL,通過put方法放入到GPU中。在GPU中聲明的mVertexBuffer只聲明了內(nèi)存,處于游離狀態(tài)。在GPU中同樣包含一個片元著色器,將游離狀態(tài)的mVertexBuffer綁定到vPosition,確定要進(jìn)行的操作。GPU中單獨存在一個采樣器中,對攝像頭進(jìn)行采樣,從攝像頭中不斷獲取到數(shù)據(jù)。

以濾鏡處理為例,以上渲染方式可以使用圖5這張更加精簡的圖來概括。

簡要來說,可以將渲染濾鏡的步驟分為三步,第一步是攝像頭收集SurfaceTexture類采集到的數(shù)據(jù),第二步是使用OpenGL進(jìn)行處理,最后一步是將處理好的結(jié)果再次渲染到攝像頭。

圖6顯示了兩個所需的著色器程序的調(diào)用過程。這兩個著色器程序位于GPU,在頂點著色器中,vPosition為攝像頭采樣形狀,vCoord將坐標(biāo)傳遞給aCoord,aCoord經(jīng)過vary修飾,從頂點著色器傳遞到片元著色器,使片元著色器確定上色位置。在片元著色器上,控制vTexture等參數(shù)實現(xiàn)改變顏色、質(zhì)感等操作。

圖7顯示了攝像頭通過FBO的渲染過程。在這里,攝像頭采集到的數(shù)據(jù)直接輸出到屏幕上是無效數(shù)據(jù),需要用FBO進(jìn)行截流,進(jìn)行編輯即濾鏡處理,之后傳遞給攝像頭,以實現(xiàn)效果。

4.4 軟件實現(xiàn)特效舉例

下面展示一類渲染過程:眼睛部分渲染,如圖8。

先聲明眼睛坐標(biāo)的屬性索引。在設(shè)置視窗后,要渲染到FBO緩存中,不直接顯示到屏幕。之后使用著色器程序,進(jìn)行渲染和傳值。編寫頂點數(shù)據(jù),傳值后激活;紋理坐標(biāo),傳值后激活;傳mFace眼睛坐標(biāo)給著色器,分別進(jìn)行左右眼的換算到紋理坐標(biāo)的操作。

之后進(jìn)行激活圖層、綁定、傳遞參數(shù)、通知OpenGL繪制、解綁FBO、返回FBO的紋理id。

5 結(jié)束語

本文基于Android的渲染過程出發(fā),立足于研究Android、OpenCV、OpenGL相關(guān)技術(shù)和方法,克服了直接通過攝像頭渲染的不足和延遲過高等缺點,實現(xiàn)了通過FBO緩存渲染的方法。運(yùn)用Android技術(shù)實現(xiàn)離屏渲染圖片,便于用戶能夠快速地進(jìn)行圖片渲染分析,實現(xiàn)了快捷的圖片操作,能更好地適用于處理大量圖片和提高渲染效率,有利于用戶在更短的時間獲得更優(yōu)質(zhì)的體驗。下一階段將進(jìn)一步研究實現(xiàn)對圖片像素操作的關(guān)聯(lián)分析和智能渲染,使其成為功能更加豐富,性能更加強(qiáng)大的人像深化處理的專業(yè)軟件。

參考文獻(xiàn):

[1] Kang S,Lee J.Developing a tile-based rendering method to improve rendering speed of 3D geospatial data with HTML5 and WebGL[J].Journal of Sensors,2017,2017:1-11.

[2] 李文瑞.基于OpenGL2.0標(biāo)準(zhǔn)的圖像處理單元設(shè)計與實現(xiàn)[D].西安:西安電子科技大學(xué),2017.

[3] 沈娟,徐英君.基于OpenCV的視頻人臉檢測[J].數(shù)碼世界,2019(10):1-2.

[4] 官酩杰.基于OpenGL ES的移動平臺圖形渲染引擎研究與實現(xiàn)[D].北京:北京交通大學(xué),2010.

[5] 王志方.嵌入式GPU中圖元光柵化的設(shè)計與實現(xiàn)[D].長沙:湖南大學(xué),2016.

[6] 高光磊,陳炳發(fā).基于FBO和GPU的動態(tài)CEM算法及實現(xiàn)[J].世界科技研究與發(fā)展,2008,30(4):440-442.

【通聯(lián)編輯:謝媛媛】

主站蜘蛛池模板: 99在线国产| 在线欧美日韩| 91青青视频| 欧美成人a∨视频免费观看| 国产电话自拍伊人| 试看120秒男女啪啪免费| 午夜视频www| 亚洲精品你懂的| 啪啪免费视频一区二区| 亚洲人妖在线| 性欧美精品xxxx| 97在线视频免费观看| 老司机久久99久久精品播放| 91免费国产在线观看尤物| 国产高清毛片| 无码一区中文字幕| 2024av在线无码中文最新| 亚洲欧美另类久久久精品播放的| 国产99免费视频| 中文成人在线| 欧美成人一级| 99re在线观看视频| 亚洲欧美日韩综合二区三区| 久久久久久久97| 国产喷水视频| 亚洲第一区欧美国产综合| av在线无码浏览| 国产精品永久不卡免费视频| 日韩无码黄色网站| 欧美成人怡春院在线激情| 综合色在线| 国产精品手机在线观看你懂的| 欧美成人h精品网站| 91成人在线观看视频| 日韩区欧美区| 在线观看免费国产| 国产免费久久精品99re丫丫一| 色综合婷婷| 国产亚洲美日韩AV中文字幕无码成人 | 乱系列中文字幕在线视频 | 欧美中文一区| 狠狠亚洲婷婷综合色香| 国产美女一级毛片| 亚洲成人高清无码| 亚洲欧美日韩中文字幕一区二区三区| 99久久99这里只有免费的精品| 99热这里只有精品5| 久久久久夜色精品波多野结衣| V一区无码内射国产| 福利国产在线| 亚洲中文字幕av无码区| 久久精品无码中文字幕| 国产xxxxx免费视频| 中国一级特黄视频| 日韩在线播放欧美字幕| 欧美日韩高清在线| 国产综合网站| 国产精品性| jizz国产在线| 超碰色了色| 韩国v欧美v亚洲v日本v| 婷婷综合在线观看丁香| 国产门事件在线| 无码一区二区三区视频在线播放| 成人年鲁鲁在线观看视频| 精品国产一区91在线| 婷婷丁香在线观看| lhav亚洲精品| 一本色道久久88亚洲综合| 成人福利在线视频免费观看| 国产主播在线一区| 粉嫩国产白浆在线观看| 蜜桃臀无码内射一区二区三区| 国产综合在线观看视频| 狠狠亚洲五月天| 视频一本大道香蕉久在线播放| 婷婷六月色| 亚洲国产精品无码久久一线| 国产麻豆福利av在线播放| 午夜日b视频| 精品人妻无码中字系列| 精品91视频|