mruby-webcamにWebカメラで取得する画像サイズを指定できるメソッドを追加した
おはようございます。このところ、すっかり朝晩が涼しく、リビングから寝室に戻り、長男用の簡易ベッドをベッドわきに作って家族で寝室で寝るようになりました。このおかげで、ベッドの自分のスペースがだいぶ広くなりました@kjunichiです。
背景
前回のコマンドプロンプトにWebカメラを表示させた際の表示速度と比べてsixelでの表示が遅いので、 Webカメラから取得する画像サイズを減らして、表示速度の改善を図った。
対応
- Webcamクラスに@width,@heightを追加
attr_accessor :width, :height
- Videocaptureインスタンスにこの、@widht,@heightの設定値を設定
mrb_value v = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "@width")); if (mrb_fixnum_p(v)) { width = mrb_fixnum(v); } v = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "@height")); if (mrb_fixnum_p(v)) { height = mrb_fixnum(v); } if (width > 0) { cap.set(CV_CAP_PROP_FRAME_WIDTH, width); } if (height > 0) { cap.set(CV_CAP_PROP_FRAME_HEIGHT, height); }
結果
まとめ
当初、@width,@heightの値の取得を誤って、fixnum型の判定の関数を読んでいて、いくらサイズを変えても、 ターミナルの端っこに小さな画像しか表示されず、半日以上解決にかかってしまった。