PCの消費電力が気になってしょうがない。
ワットチェッカーは持っているんだけど、いつも見える位置に配置しようとすると電源ケーブルをかなり延長する必要がある。Bluetoothで飛ばす製品もあるみたいだけど、結構なお値段する。
ということで、ありものの明暗センサLEDライト+ワットチェッカー+Webカメラを使ったソリューション。Webカメラにマグネットシールを張り付けて、PCケース背面に設置、ワットチェッカーを監視。フレキシブルなUSBケーブルとかあればそっちのほうが便利かもしれない。暗くても見えるように近くに明暗センサLEDライトも設置しとく。
OpenCvSharpを使えばWebカメラからキャプチャできるらしい。NuGetしてきて適当にプログラムを書く。PictureBoxIplというコンポーネントがあったので、これを使えば表示できそうな気がする。
namespace WattCheck { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void MainForm_Load(object sender, EventArgs e) { timer1.Interval = 1000; timer1.Start(); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { CloseCaptureDevice(); } private void timer1_Tick(object sender, EventArgs e) { UpdateCapture(); } VideoCapture cap = null; private void UpdateCapture() { if(cap != null && cap.IsOpened()) { pictureBoxIpl1.ImageIpl = cap.RetrieveMat(); System.GC.Collect(); } else { OpenCaptureDevice(); } } private void OpenCaptureDevice() { for (int i = 0; i < 0x8; i++) { cap = new OpenCvSharp.VideoCapture(i); if (cap.IsOpened()) { break; } else { CloseCaptureDevice(); } } } private void CloseCaptureDevice() { if (cap != null) { cap.Release(); cap.Dispose(); } } } }
やったー。
PC+ディスプレイの消費電力。
LEDライトは0.2ワットだから気にしない。
あとは文字認識させてロギングしたいけど適当なOCRのライブラリってあるんだろうか。
探してみるとtesseract-ocrというものを使うと良いらしい。
適当に画像を2値化して食わせてみたけど……。
反射光やら影やらのせいでうまく認識しない。
7セグ数字くらいなら自前でテンプレートマッチングしたほうが手っ取り早そうな気がしないでもない。そのうちなんとかしよ。