적외선 어레이 센서 AMG8833 (Grid-EYE)의 데이터 표시

이번에 할 일



지난번 에서 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

좋은 웹페이지 즐겨찾기