#ソースコード
boot.py
import sensor
import image
import lcd
import time
clock = time.clock()
lcd.init()
lcd.rotation(2)
sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((0, 40, 320, 200))
sensor.set_brightness(-3)
sensor.set_vflip(0)
sensor.set_hmirror(0)
sensor.skip_frames(30)
sensor.run(1)
while True:
clock.tick()
img = sensor.snapshot()
try:
iterater = img.find_apriltags()
if len(iterater) > 0:
for tag in iterater:
print(tag)
lcd.display(img)
except Exception as e:
print(e)
こういうのってなんとなくグレースケールでとるのが一般的な気がするので、
sensor.set_pixformat(sensor.GRAYSCALE)
としている。
カラーとどっちが認識率が高いのかは比較していないです。
また、micropython環境でのfind_apriltags()が、64000pixelまでしか対応してないらしいので、
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((0, 40, 320, 200))
として、QVGA画像から真ん中を切り出している。
ただ、set_windowing()の与えるtupleの最初の二つの値は効いていないようで、どんな値を渡しても、(0, 0)からの切り取りになる。。
また、画面を反転したり回転させたりしているところ
sensor.set_vflip(0)
sensor.set_hmirror(0)
ここに関しては、M5StickVとUnutVで挙動が違う可能性があるので注意。
現状だとすべてのタグに対して検索がかかるが、
find_apriltags(families=image.TAG16H5)
などとして指定すれば、検出するtagfamilyを指定できる。