android 测光模式,Android Camera1中的对焦与测光
Android Camera1開發(fā)系列連載:
Android Camera1詳解
Android Camera1顯示預(yù)覽的四種方式
對焦模式
在使用特定的對焦模式的時候,必須確保相機支持該模式,相機支持的對焦模式可以通過Parameters#getFocusMode接口來獲取:
常用的對焦模式為:
//?連續(xù)自動對焦caf,預(yù)覽場景變化時會自動去對焦Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEOCamera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE//?單次自動對焦af,下發(fā)一次請求則對焦一次Camera.Parameters.FOCUS_MODE_AUTO
對焦區(qū)域
當對焦模式為caf或者af時,可以指定對焦區(qū)域,如果未設(shè)置,則驅(qū)動程序?qū)约哼x擇焦點目標,看一張來自官網(wǎng)描述對焦坐標系的圖:
如圖所示,無論屏幕是橫屏還是豎屏,預(yù)覽視圖的中心點坐標都是(0,0),左上角為(-1000,-1000),右下角為(1000,1000)
在計算屏幕坐標系中的UI點擊坐標(x,y)到sensor對焦坐標系對焦區(qū)域focusRect的時候,還需要考慮預(yù)覽的旋轉(zhuǎn)角和前置鏡像,計算過程大致如下:
設(shè)置對焦區(qū)域的時候,需要先查詢一下可設(shè)置對焦區(qū)域的最大個數(shù):
//?返回0的時候表示不支持設(shè)置對焦區(qū)域,通常都是返回1// 當返回個數(shù)大于1的時候,可以設(shè)置對焦區(qū)域列表,//?每個對焦區(qū)域可以設(shè)置權(quán)重,權(quán)重范圍為1~1000Parameters#getMaxNumFocusAreas
常見對焦模式的切換場景
單拍時,先對焦再拍照,拍照結(jié)束后切換到caf
連拍時,先對焦再拍照,連拍結(jié)束后切換到caf
觸屏對焦TouchAF后,可以進行鎖焦,預(yù)覽場景變化時再轉(zhuǎn)為caf;或者設(shè)置超時機制,3-5s后從af轉(zhuǎn)為caf。不同手機的系統(tǒng)相機中選擇的策略不同,主流策略大概就這兩種
af切換到caf的時候,需要切換對焦模式和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);
對焦畫框邏輯
autoFocus流程:五種狀態(tài),三類UI
//?三類UI:正在對焦畫白框,對焦成功畫綠/黃框,失敗畫紅框// 五種狀態(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的時候畫白框,對焦成功畫綠/黃框,超時直接清除UI// 三種狀態(tài)MOVING_START?//?caf startMOVING_END? // caf endTIMEOUT?????// time out
上面的顯示策略對對焦狀態(tài)的展示是很明晰的,不過現(xiàn)在的主流相機app都不會搞這么復(fù)雜,比如我手頭的iPhone和小米手機的系統(tǒng)相機就沒這么多顏色切換
測光
測光的坐標系和使用流程與對焦是一樣的,就不具體描述了。
在TouchAF的時候,測光區(qū)域可以和對焦區(qū)域一樣,也可以區(qū)域中心點相同,而框的大小不同,或者對焦區(qū)域和測光區(qū)域設(shè)置為不同區(qū)域,這種焦側(cè)分離的功能一般都是在相機app中的專業(yè)模式中提供。考慮用戶體驗選擇不同的策略即可
常見測光方式
注:Redmi k30 5G版?系統(tǒng)相機專業(yè)模式
點測光:對畫面中較小的區(qū)域(占整體面積的1.5% - 3%)進行測光,不考慮周邊環(huán)境亮度,測光點所偵測的畫面非常小,結(jié)果比較精確。這種測光模式適合用于場景光線反差大,或者主體在畫面中所占比例較小的時候使用;
中央重點測光:測光重點放在畫面的中心約75%的區(qū)域。在光線色差反差較大的情況下,這種測光模式比矩陣測光更容易控制效果;
平均測光:又叫矩陣測光,對畫面中整體區(qū)域的光線強弱和色彩等情況進行偵測分析后,得到一個平均比較科學(xué)的測光值。這種測光模式適合在場景中光線、色彩等反差 不大的情況下使用;
以下面這張照片為例,在逆光場景下展示花瓣的紋路,為了讓花瓣顯得通透一點,可以采用點測光模式進行拍攝
測光方式的選擇依賴于芯片提供支持或者相機Turing實現(xiàn),在標準api中是沒有直接提供相關(guān)接口的
該功能多見于系統(tǒng)相機專業(yè)模式,一般在第三方的相機類app啟動相機預(yù)覽后,都是默認的中央重點測光。第三方相機要實現(xiàn)測光方式的選擇,除了依賴于廠商提供支持外,其實也可以自己研究一套AE權(quán)重表然后利用OpenGL來實現(xiàn)
總結(jié)
以上是生活随笔為你收集整理的android 测光模式,Android Camera1中的对焦与测光的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 车上挂什么挂件最好适合挂在车上保平安的物
- 下一篇: 连云港市赣榆区九万的车购置税多少