non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

mruby-webcamにWebカメラで取得する画像サイズを指定できるメソッドを追加した

おはようございます。このところ、すっかり朝晩が涼しく、リビングから寝室に戻り、長男用の簡易ベッドをベッドわきに作って家族で寝室で寝るようになりました。このおかげで、ベッドの自分のスペースがだいぶ広くなりましたkjunichiです。

背景

前回のコマンドプロンプトにWebカメラを表示させた際の表示速度と比べてsixelでの表示が遅いので、 Webカメラから取得する画像サイズを減らして、表示速度の改善を図った。

対応

  • Webcamクラスに@width,@heightを追加
attr_accessor :width, :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);
}

結果

github.com

まとめ

当初、@width,@heightの値の取得を誤って、fixnum型の判定の関数を読んでいて、いくらサイズを変えても、 ターミナルの端っこに小さな画像しか表示されず、半日以上解決にかかってしまった。

関連記事