OpenCV、機械学習、はやりのDeep learningの環境構築の方法、サンプルの動かし方、APIの使い方、Tipsなどをすぐに忘れてしまうので、備忘録として記録している。記憶がなくなるスピードが、早いのでメモしておかないと再現できなくなる確率が高まっている。 最近、再度HDDを飛ばしてしまい、過去の自分のページに再度助けられた。 また、DNNモジュールを触る機会が増えているので、C++からPyhonへと鞍替え中。 内容を気にいっていただければ、twitterで紹介願います。
2012年10月18日木曜日
OpenCVでcv::Matの平均を求める
画像の輝度値の平均を求める場合、各要素にアクセスし、輝度値の合計を求め、画素数でわれば輝度値の平均を求めることができる。
この場合、列と行でループをまわして、各要素へのアクセスをおこうなことになる。
OpenCVでは、平均を求める便利な関数cv::reduceが準備されている
C++: void reduce(InputArray src, OutputArray dst, int dim, int rtype, int dtype=-1 )
この関数では、1次元の方向しか処理を行わない
dim = 0 の場合、行方向に処理が行われ、列のみとなる
dim = 1 の場合、列方向に処理が行われ、行のみとなる
rtypeは、処理の種類で下記のパラメータを指定する
CV_REDUCE_SUM 合計
CV_REDUCE_AVG 平均
CV_REDUCE_MAX 最大値
CV_REDUCE_MIN 最小値
画面全体の平均値を求めには、2回処理を繰り返せばよい。
ただし、縮退後のmatのタイプも自動的に入力のタイプに合せられるため、ucharのデータを使用すると結果もucharとなる
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿