● 温度計の改造

 実際のアルコール温度計は、目盛りが細かく、画像からその位置を取得するプログラムを書くのが大変です。ひとが目で見て温度を知る場合は、細かい目盛りが必要ですが、コンピューターでは、基準となる2位置さえわかれば、そことの位置関係で温度は計算できます。そこで、20℃と40℃の位置(Y座標)だけわかるよう、右のように青い紙を貼りました。
 上の青と白(ガラス)境目のY座標(40℃)、下の青と赤境界のY座標(20℃)、赤い部分の上端のY座標(現在温度)の3つを取得することで、温度を知ることができるはずです。

 ● USBカメラからの画像で温度取得

 アルコール温度計は、空容器に貼って立てます。
 USBカメラの最短撮影距離が30cmなので、そのくらいの距離に置きます。ラズパイ2からの画像をパソコンのディスプレーで見て、温度計が中央付近になるように位置を調整します。
 特に、画像に対して、温度計のガラスが垂直になっていないと、各X-Y座標を取得するプログラムが複雑になって大変なので、良く確認しました。
 この状態で撮影した画像から、色の境界を以下のように設定しました。
  赤: R > 100 & G < 100 & B < 100
  青: R < 50 & G < 50 & B > 70
 書いた図と違い、周りが白っぽくて画像内に照明も入るため、アルコール温度計は暗めに写っています。
  • 赤いアルコールがあるY座標の中央付近を左から読んでいって、赤い部分の中心のX座標(Xr)を取得する。
  • X座標Xrの中央付近を上から読んでいって、40℃のY座標(Y40)と20℃のY座標(Y20)を取得する。
  • X座標XrのY座標Y40から下方向に読んでいって、赤い部分の上端のY座標(Yt)を取得する。
  • Yt, Y40, Y20から、温度を得る。
    温度[℃] = ( (Y20 - Yt) / (Y20 - Y40) ) × 20 + 20
 このプログラムで、アルコール温度計を目で見たのと同様の値を、取得できることを確認しました。

 ● ラズパイ2で温度測定と記録

 USBカメラで撮影し、その画像から温度を取得するプログラムを、ラズパイ2で毎分実行するようcrontabに登録し、温度データを記録しました。
 測定開始から、11:50くらいまでは、安定しています。その後、少し低めの温度になって、高い・低いノイズも混じるようになりました。原因として考えられるのが、測定場所の環境です。窓際なので、直射日光は当たりませんが、外からの光の影響で、撮影した画像の色に違いが生じていると思われます。特に、低めの温度になった時間帯は、照明を消してブラインドを開けているので、画像に大きな違いが生じているはずです。