2019-03-06

圍,一起努力吧~

工作

BUG:手動(dòng)增益不能連續(xù)增大

現(xiàn)象:從web端將增益快門(mén)改成手動(dòng),會(huì)發(fā)現(xiàn)隨著增益的增大,圖片亮度先遞增,到了54時(shí),圖片瞬間變暗,再繼續(xù)遞增。
思路:從增益從上到下傳遞的地方推斷出可能會(huì)改變的地方:
業(yè)務(wù)--ispctrl層--hal層--camera層的aec輸出(aec.biz)--camera層的sensor模塊的(設(shè)置)--寫(xiě)入寄存器
過(guò)程:經(jīng)過(guò)排查發(fā)現(xiàn)隨著web界面上增益的增大,aec的輸出是逐步增大的,對(duì)sensor模塊進(jìn)行打印,發(fā)現(xiàn)寄存器寫(xiě)入的值也是正確的。懷疑是寄存器初始化有問(wèn)題,和8056平臺(tái)的IMX385進(jìn)行比較,沒(méi)有找到異常。查看手冊(cè),發(fā)現(xiàn)相比于290,增益寄存器是兩個(gè)字節(jié)組成的,而web界面上的53對(duì)應(yīng)的是0xff,54對(duì)應(yīng)的是0x100,猜測(cè)可能是寄存器只寫(xiě)了低八位。

image.png

查看代碼:

    reg_setting->reg_setting[reg_count].reg_addr =
    sensor_lib_ptr.exp_gain_info.global_gain_addr;
    reg_setting->reg_setting[reg_count].reg_data = gain & 0xFF;
    reg_setting->reg_setting[reg_count].delay = 0;
    reg_count = reg_count + 1;

發(fā)現(xiàn)代碼真的僅僅對(duì)地址0x3014h進(jìn)行了賦值,沒(méi)有將高八位賦值。
增加代碼:

    reg_setting->reg_setting[reg_count].reg_addr =
    sensor_lib_ptr.exp_gain_info.global_gain_addr+1;
    reg_setting->reg_setting[reg_count].reg_data = (gain & 0x100) >> 8;
    reg_setting->reg_setting[reg_count].delay = 0;
    reg_count = reg_count + 1;

解決問(wèn)題。但是需要注意代碼中reg_setting[reg_count]reg_count是否進(jìn)行初始化,是否會(huì)出現(xiàn)數(shù)組溢出的問(wèn)題?此處沒(méi)有細(xì)查。
小結(jié)
對(duì)增益從web端的傳遞到寄存器的過(guò)程加深了理解。

幫助對(duì)日夜切換代碼修改

  1. 將結(jié)構(gòu)體從HAL層的qcameraparameter傳遞到qcameraHWI。實(shí)現(xiàn)了按值傳遞和按地址傳遞,最終選擇按地址傳遞。
  2. 定位日夜切換代碼會(huì)對(duì)ISP傳遞過(guò)來(lái)的參數(shù)造成影響的BUG
    小結(jié):由于高通將每個(gè)模塊的變量都分離開(kāi)來(lái),不能隨意獲取,同樣每個(gè)模塊的函數(shù)也不能隨意使用,可能會(huì)將這個(gè)模塊中定義的實(shí)例又刷新一遍

學(xué)習(xí)

參考博客制作在線相冊(cè),希望實(shí)現(xiàn)目標(biāo):

  1. 由于使用的七牛網(wǎng)圖片,希望實(shí)現(xiàn)在線加載所有圖片(不用每每次上傳圖片都對(duì)網(wǎng)站有所更改)
  2. 實(shí)現(xiàn)瀑布流相冊(cè)效果(不會(huì)對(duì)圖片進(jìn)行裁切)
  3. 預(yù)覽是縮略圖,點(diǎn)開(kāi)是原圖(加快網(wǎng)頁(yè)加載速度)

圖片列表獲取

我這里先用Python獲取到七牛云上相應(yīng)的bucket的列表??梢院苋菀椎墨@得到所有的文件名列表。
但希望同時(shí)獲得圖片大小,這樣可以用JavaScript對(duì)圖片進(jìn)行相應(yīng)比例的縮放。但發(fā)現(xiàn)直接獲取的圖片數(shù)據(jù)要么不全,要么太大,導(dǎo)致加載速度太慢。
因此考慮在上傳的時(shí)候?qū)D片重命名,或者加上exif信息,這樣在線獲取圖片大小就快多了。

# -*- coding: utf-8 -*-
# flake8: noqa
from qiniu import Auth
from qiniu import BucketManager
from qiniu import build_batch_stat
import requests
import ast
import time
access_key = 'ymnOv5ZzF9x5oPDWKqCZiTWB2QERX-GB6DnyaWaL'
secret_key = 'NIDcseYMO-u-4WZv0VFqJhPkn_wHwsDTeCXHq9r8'
q = Auth(access_key, secret_key)
bucket = BucketManager(q)
bucket_name = 'album'
#參數(shù)設(shè)置
# 前綴
prefix = None
# 列舉條目-None代表所有
limit = None
# 列舉出除'/'的所有文件以及以'/'為分隔的所有前綴
delimiter = None
# 標(biāo)記
marker = None
now_time = time.time()
ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)

print('getBuckFile\n')
# print(info)
assert len(ret.get('items')) is not None
# info中的text_body才是我們想要的內(nèi)容,但是是字符串 字符串轉(zhuǎn)dict比較麻煩,
# 需要通過(guò)ast.literal_eval轉(zhuǎn)成dict類型
# 我們發(fā)現(xiàn)ret是dict類型,里面的items的值是一個(gè)list
# 每個(gè)list代表了每個(gè)文件,每個(gè)文件又是是dict類型
# VScode debug時(shí)可以將鼠標(biāo)懸停,查看變量屬性;用spyder更加方便一點(diǎn)
filelist = []
for filename in ret.get('items'):
    filelist.append(filename.get('key'))
now_time = time.time() - now_time
print('get bucket time:'+str(now_time))

ops = build_batch_stat(bucket_name, filelist)
ret, info = bucket.batch(ops)
now_time = time.time() - now_time
print('get bucket info time:'+str(now_time))

ret, info = bucket.stat(bucket_name, filelist[0])
now_time = time.time() - now_time
print('get file exif time:'+str(now_time))
# print(ret)
bucket_address = 'http://pnbj1h9rr.bkt.clouddn.com/'
exif = '?exif'
# for...in..循環(huán)不能修改list的值;用list下標(biāo)查找就可以修改list的值
"""
for count in range(len(filelist)):
    r = requests.get(bucket_address+filelist[count]+exif)
    p = ast.literal_eval(r.text)
    if 'PixelXDimension' in p:
        filelist[count] += ' '+str(p.get('PixelXDimension').get('val'))+ \
            ' '+ str(p.get('PixelYDimension').get('val'))
print(filelist)
"""
imageinfo='?imageinfo'
r=requests.get(bucket_address+filelist[20]+imageinfo)
now_time = time.time() - now_time
print('get imageinfo time:'+str(now_time))

print(r.content)
now_time = time.time() - now_time
print('print text time:'+str(now_time))

小結(jié)

  1. VScode debug時(shí)可以將鼠標(biāo)懸停,查看變量屬性;用spyder更加方便一點(diǎn)
  2. for...in..循環(huán)不能修改list的值;用list下標(biāo)查找就可以修改list的值
  3. 可以通過(guò)ast.literal_eval將字符串轉(zhuǎn)成dict類型
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 消息中間件選型分析——從Kafka與RabbitMQ的對(duì)比來(lái)看全局 本文收錄于InfoQ,未經(jīng)允許不得轉(zhuǎn)載。 歡迎...
    照鏡妮子閱讀 228評(píng)論 0 0
  • 原來(lái)你這幾年過(guò)得也不好。 我在想,真的要這樣嗎?真的是折磨自己的事一件事情呀。 跨出去就好了,快出去,真的
    lygly9閱讀 115評(píng)論 0 1
  • 今年,這座北方海邊小城多雨,去年這個(gè)時(shí)候,已經(jīng)熱得兒不行,今年卻一直蠻清涼的,讓我總是忘記早已身處夏天。陰雨連綿悱...
    遇見(jiàn)penny閱讀 381評(píng)論 0 1
  • 那些被珍惜的女人會(huì)是怎么樣的,貌美如花?體貼入微?聽(tīng)話乖巧?被珍惜的女人一定很好,但好的標(biāo)準(zhǔn)跟容顏和懂事體貼無(wú)關(guān),...
    一簾舊夢(mèng)閱讀 1,068評(píng)論 0 0

友情鏈接更多精彩內(nèi)容