#カメラの設定に使えるメソッド
●sensor.set_pixformat(value)
value=[sensor.RGB565, sensor.GRAYSCALE]
●sensor.setframesize(value)
value=[sensor.VGA, QVGA, QQVGAなど]
- その他,以下の形式が使用可能
- sensor.LCD[128, 160]
- sensor.B64X32[64, 32]
- sensor.B64X64[64, 64]
●sensor.set_saturation(value)
value=[-2 ~ 2]整数のみ
●sensor.set_brightness(value)
value=[-2 ~ 2]整数のみ
●sensor.set_contrast(value)
value=[-2 ~ 2]整数のみ
引数に大きな数字を与えてもエラーにならないが,MaixPy DOCによると指定できるのは上記の範囲のみ
●sensor.set_windowing(value)
valueはクリップする幅と高さをタプルで与える
●sensor.skip_frames(value)
valueは時間,もしくはフレーム数
●sensor.width()
カメラの画素数を取得(現在の設定値)
●sensor.height()
カメラの画素数を取得(現在の設定値)
●sensor.snapshot()
撮影
●sensor.get_fb()
フレーム・バッファ(imageオフジェクト)を取得
●sensor.set_hmirror(value)
value=[True or False]
カメラの左右を反転
●sensor.set_vflip()
value=[True or False]
カメラの上下を反転
●sensor.get_id()
筆者の環境では30530が返ってくる
●sensor.__write_reg(address, value)
●sensor.__read_reg(value)
valueは読みたいレジスタのアドレスを与える
●sensor.reset()
#使えないメソッド
MaixPy DOCに書いてあるが,現状M5StickVで使えないAPI
●sensor.set_auto_gain(bool, value)
bool=0:オートゲインOFF,value=floatでゲインを指定
●sensor.get_gain_db()
●sensor.set_colorbar(value)
value=[0 or 1]
MaxiPy DOCには0でカラーバーモード無効,1で有効と書いてあるが何を指定してもFalseが返ってくる.コンパイル,実行時共にエラーにはならない.
#●カメラの設定 ピクセルサイズ
[GRAYSCALE,RGB565, YUV422]など指定可能
BAYERはサポートされないようで,OS errorとなる.
import sensor
sensor.set_pixformat(sensor.RGB565)
#●カメラの設定 撮像解像度 [VGA, QVGA, QQVGA]などが指定可能 QQQVGAは指定できるが,firmware(python実行環境)に処理が書いてないため,画像が乱れる. https://github.com/sipeed/MaixPy/blob/master/components/micropython/port/src/omv/ov7740.c
import sensor
sensor.set_framesize(sensor.QVGA)
#●カメラの設定 フレーム・レート firmwareをビルドするとき,menuconfigでOV7740のベースクロック?を設定できる.OV7740は最高27Mhzで動作可能だが,デフォルトでは12MHzになっているようなので,クロックを上げてやると,若干レートが改善する. 液晶表示も足を引っ張るかもなので,カメラ画像の画面表示ありでフレーム・レートを上げるには工夫が必要かも. クロック24Mhz,QQVGA,RGB565の条件で34FPS程度出ている(液晶表示なし) クロック24Mhz,QVGA,RGB565,`set_windowing((128,128))`で60FPS出ます ファーム・ウェア・ビルドは下記参照 https://raspberrypi.mongonta.com/howto-build-firmware-of-m5stickv/ 現在は,SipeedのリポジトリはMaixPyからMaixPy-v1に変わっている.
#●カメラの画像を切り出し 内部的には`set_framesize()`に従い,VGAなりQVGAで撮像するが,`set_windowing()`しておくと,取り出す画像は設定した切り出し画像となる(多分OV7740側で処理される) 4つの引数でx, yも指定してみたが,位置指定はできず,常に
sensor.set_windowing((32, 32)) #32x32を切り出し
img = sensor.snapshot()
バグがあるようです.
import sensor, image, time, lcd
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((240,104)) #8の倍数でも変な数字を指定するとダメかも
sensor.skip_frames(time = 1000)
clock = time.clock()
while(True):
clock.tick()
img = sensor.snapshot()
lcd.display(img)
#●カメラの画像を左右/上下反転
sensor.set_hmirror(enable) #左右反転
sensor.set_vflip(enable) #上下反転