今回やること
前回でAMG8833(Grid-EYE)のデータ取得ができましたが、ただ数字が出るだけだったので画像として表示してみようと思います。
2次元配列データの可視化
matplotlibを使って2次元配列を表示させます。
amg8833.py
# -*- coding: utf-8 -*-
import time
import busio
import board
import adafruit_amg88xx
import matplotlib.pyplot as plt
# I2Cバスの初期化
i2c_bus = busio.I2C(board.SCL, board.SDA)
# センサーの初期化
sensor = adafruit_amg88xx.AMG88XX(i2c_bus, addr=0x68)
# センサーの初期化待ち
time.sleep(.1)
# imshowでsensor.pixelsの2次元配列データを表示させる
fig = plt.imshow(sensor.pixels, cmap="inferno")
plt.colorbar()
plt.show()
実行すると画像が表示されます。
センサーの上部で手をパーにしてかざして実行しました。
$ python3 amg8833.py
bicubic補間を使ってみる
とりあえず熱画像っぽいのは表示することができましたが、AMG8833は8x8ピクセルのため解像度が低すぎてよくわからないので、bicubic補間を使ってみます。
imshowのinterpolationオプションでbicubicを指定すると補間されます。
amg8833.py
# -*- coding: utf-8 -*-
import time
import busio
import board
import adafruit_amg88xx
import matplotlib.pyplot as plt
# I2Cバスの初期化
i2c_bus = busio.I2C(board.SCL, board.SDA)
# センサーの初期化
sensor = adafruit_amg88xx.AMG88XX(i2c_bus, addr=0x68)
# センサーの初期化待ち
time.sleep(.1)
# 8x8ピクセルの画像とbicubic補間をした画像を並べて表示させる
plt.subplots(figsize=(8, 4))
# データ取得
sensordata = sensor.pixels
# 8x8ピクセルのデータ
plt.subplot(1, 2, 1)
fig = plt.imshow(sensordata, cmap="inferno")
plt.colorbar()
# bicubic補間したデータ
plt.subplot(1, 2, 2)
fig = = plt.imshow(sensordata, cmap="inferno", interpolation="bicubic")
plt.colorbar()
plt.show()
実行すると、オリジナルと補間画像の2枚が並んで表示されます。
$ python3 amg8833.py
少しは手の形がわかるようになったかなと思います。
動画にしてみる
1枚の静止画では何かと不便なので、ループさせて動画にしてみます。
amg8833.py
# -*- coding: utf-8 -*-
import time
import busio
import board
import adafruit_amg88xx
import matplotlib.pyplot as plt
# I2Cバスの初期化
i2c_bus = busio.I2C(board.SCL, board.SDA)
# センサーの初期化
sensor = adafruit_amg88xx.AMG88XX(i2c_bus, addr=0x68)
# センサーの初期化待ち
time.sleep(.1)
# 8x8ピクセルの画像とbicubic補間をした画像を並べて表示させる
plt.subplots(figsize=(8, 4))
# ループ開始
while True:
# データ取得
sensordata = sensor.pixels
# 8x8ピクセルのデータ
plt.subplot(1, 2, 1)
fig = plt.imshow(sensordata, cmap="inferno")
plt.colorbar()
# bicubicのデータ
plt.subplot(1, 2, 2)
fig = plt.imshow(sensordata, cmap="inferno", interpolation="bicubic")
plt.colorbar()
# plt.showだと止まってしまうので、pauseを使用
# plt.clfしないとカラーバーが多数表示される
plt.pause(.1)
plt.clf()
手を左から右に動かして撮影してみました。
$ python3 amg88333.py