OV5640全景模式预览倒180度,拍照正常的问题
此方法基本上適用于所有android平臺上全景模式預覽倒180度,拍照正常的問題。
? ? ?首先說明的是,影響camera方向的有三個地方,分別是系統方向,內核camera方向和驅動鏡像。全景模式預覽只跟系統方向和驅動鏡像有關,一般情況下我們不希望去更改系統方向,而是去修改驅動鏡像的方向,來調整全景模式的預覽方向。而全景模式的拍照方向跟全景模式的預覽方向沒有任何關系,全景拍照的方向跟普通的拍照方向保持一致。
? ? ?下面針對具體問題來進行詳細說明。
? ? ?1.OV5640控制上下倒180度的寄存器是
? ? ? 驅動代碼里面默認的是0x41,即0100 0001,Bit7~3是控制模式的,不需要動它,Bit2控制的是ISP(Image Signal Processor影視處理,無論數碼相機、攝像機或者攝像手機,其影像數據從前端感應后,皆須經過ASP(Analog Signal Processing)、ADC(Analog-Digital Converter)、前期影像處理(Pre-ISP)與后端影像處理(Post-ISP)四個階段后,影像數據才能最終呈現于終端設備上)上下顛倒的,BIT1控制的是Sensor的上下顛倒。這個上下顛倒可能就需要不斷的嘗試了,總共有0x43和0x47,注意在驅動中可能有多處涉及到0x3820,但是對于全景模式的預覽,我們只需要處理的初始化數組static struct reginfo sensor_init_data中最后一組0x3820的值即可,我這邊改成0x47后,全景模式預覽就正常了,但是拍照還是倒的,這個沒關系,前面也說了跟普通拍照有關。
接下來就是通過調試kernel內核camera的方向來調整camera的預覽以及拍照的方向了,這個好辦,只說明一點。當我們點擊camera應用程序圖標進入camera時,出現的預覽畫面走的流程也是sensor_init_data數組,但是當你點擊拍照按鈕后,有時會發現,照片拍完后預覽的方向又倒了180度,這個是因為拍照后走的流程跟第一次進入camera預覽調用的數組不一樣了,而是跟具體的分辨率有關了,比如800X600走的是一個數組,1024x720走的又是一個數組,跟camera里面照片像素是相關聯的,這個時候還應該來修改驅動代碼。找到相應分辨率下對應的數組名稱,然后將所有0x3820的值更改為0x47,跟全景調試的結果保持一致。
??1.OV5640控制左右鏡像的寄存器是:
驅動代碼里面默認的是0x07,即0000 0111,此時水平沒有鏡像效果的。這里我們可以不管Bit7~Bit3,只留意低三位。Bit0 :Horizontal binning enable是個使能控制位,一般需要為高的,接下來就是0011,0101和0001三組數值了,一個一個嘗試吧,最后發現0001是可以產生鏡像效果的,及0x3821取值0x01即可,接下來的操作就是跟1中的操作一樣,替換所有分辨率下對應數組里面的0x3821寄存器的值為0x01即可。
此致,問題得到了完美的解決。
總結
以上是生活随笔為你收集整理的OV5640全景模式预览倒180度,拍照正常的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MTK 平台上查询当前使用的摄像头模组及
- 下一篇: Android开发概要记录