您好,登錄后才能下訂單哦!
這篇文章給大家介紹Android中怎么利用Camera1實(shí)現(xiàn)對(duì)焦與測(cè)光,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
對(duì)焦模式
在使用特定的對(duì)焦模式的時(shí)候,必須確保相機(jī)支持該模式,相機(jī)支持的對(duì)焦模式可以通過Parameters#getFocusMode接口來獲取:
常用的對(duì)焦模式為:
// 連續(xù)自動(dòng)對(duì)焦caf,預(yù)覽場(chǎng)景變化時(shí)會(huì)自動(dòng)去對(duì)焦Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE // 單次自動(dòng)對(duì)焦af,下發(fā)一次請(qǐng)求則對(duì)焦一次Camera.Parameters.FOCUS_MODE_AUTO
對(duì)焦區(qū)域
當(dāng)對(duì)焦模式為caf或者af時(shí),可以指定對(duì)焦區(qū)域,如果未設(shè)置,則驅(qū)動(dòng)程序?qū)?huì)自己選擇焦點(diǎn)目標(biāo),看一張來自官網(wǎng)描述對(duì)焦坐標(biāo)系的圖:
如圖所示,無論屏幕是橫屏還是豎屏,預(yù)覽視圖的中心點(diǎn)坐標(biāo)都是(0,0),左上角為(-1000,-1000),右下角為(1000,1000)
在計(jì)算屏幕坐標(biāo)系中的UI點(diǎn)擊坐標(biāo)(x,y)到sensor對(duì)焦坐標(biāo)系對(duì)焦區(qū)域focusRect的時(shí)候,還需要考慮預(yù)覽的旋轉(zhuǎn)角和前置鏡像,計(jì)算過程大致如下:
設(shè)置對(duì)焦區(qū)域的時(shí)候,需要先查詢一下可設(shè)置對(duì)焦區(qū)域的最大個(gè)數(shù):
// 返回0的時(shí)候表示不支持設(shè)置對(duì)焦區(qū)域,通常都是返回1// 當(dāng)返回個(gè)數(shù)大于1的時(shí)候,可以設(shè)置對(duì)焦區(qū)域列表,// 每個(gè)對(duì)焦區(qū)域可以設(shè)置權(quán)重,權(quán)重范圍為1~1000Parameters#getMaxNumFocusAreas
常見對(duì)焦模式的切換場(chǎng)景
單拍時(shí),先對(duì)焦再拍照,拍照結(jié)束后切換到caf
連拍時(shí),先對(duì)焦再拍照,連拍結(jié)束后切換到caf
觸屏對(duì)焦TouchAF后,可以進(jìn)行鎖焦,預(yù)覽場(chǎng)景變化時(shí)再轉(zhuǎn)為caf;或者設(shè)置超時(shí)機(jī)制,3-5s后從af轉(zhuǎn)為caf。不同手機(jī)的系統(tǒng)相機(jī)中選擇的策略不同,主流策略大概就這兩種
af切換到caf的時(shí)候,需要切換對(duì)焦模式和callback,從af切換到caf:
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);camera.setAutoFocusMoveCallback(cafCallback);
從caf切換到af:
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);camera.autoFocus(afCallback);
對(duì)焦畫框邏輯
autoFocus流程:五種狀態(tài),三類UI
// 三類UI:正在對(duì)焦畫白框,對(duì)焦成功畫綠/黃框,失敗畫紅框// 五種狀態(tài)IDEL // focus is not activeFOCUSING // focus is in progressFOCUSING_SNAP_ON_FINISH // will take picture after focus finishSUCCESS // focus finished and successFAIL // focus finished and fails
autoFocusMoving流程:三種狀態(tài),兩類UI
// 兩類UI:moving的時(shí)候畫白框,對(duì)焦成功畫綠/黃框,超時(shí)直接清除UI// 三種狀態(tài)MOVING_START // caf startMOVING_END // caf endTIMEOUT // time out
上面的顯示策略對(duì)對(duì)焦?fàn)顟B(tài)的展示是很明晰的,不過現(xiàn)在的主流相機(jī)app都不會(huì)搞這么復(fù)雜,比如我手頭的iPhone和小米手機(jī)的系統(tǒng)相機(jī)就沒這么多顏色切換
測(cè)光
測(cè)光的坐標(biāo)系和使用流程與對(duì)焦是一樣的,就不具體描述了。
在TouchAF的時(shí)候,測(cè)光區(qū)域可以和對(duì)焦區(qū)域一樣,也可以區(qū)域中心點(diǎn)相同,而框的大小不同,或者對(duì)焦區(qū)域和測(cè)光區(qū)域設(shè)置為不同區(qū)域,這種焦側(cè)分離的功能一般都是在相機(jī)app中的專業(yè)模式中提供??紤]用戶體驗(yàn)選擇不同的策略即可
常見測(cè)光方式
注:Redmi k30 5G版 系統(tǒng)相機(jī)專業(yè)模式
點(diǎn)測(cè)光:對(duì)畫面中較小的區(qū)域(占整體面積的1.5% - 3%)進(jìn)行測(cè)光,不考慮周邊環(huán)境亮度,測(cè)光點(diǎn)所偵測(cè)的畫面非常小,結(jié)果比較精確。這種測(cè)光模式適合用于場(chǎng)景光線反差大,或者主體在畫面中所占比例較小的時(shí)候使用;
中央重點(diǎn)測(cè)光:測(cè)光重點(diǎn)放在畫面的中心約75%的區(qū)域。在光線色差反差較大的情況下,這種測(cè)光模式比矩陣測(cè)光更容易控制效果;
平均測(cè)光:又叫矩陣測(cè)光,對(duì)畫面中整體區(qū)域的光線強(qiáng)弱和色彩等情況進(jìn)行偵測(cè)分析后,得到一個(gè)平均比較科學(xué)的測(cè)光值。這種測(cè)光模式適合在場(chǎng)景中光線、色彩等反差 不大的情況下使用;
關(guān)于Android中怎么利用Camera1實(shí)現(xiàn)對(duì)焦與測(cè)光就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。