字下げスタイルとわたし
「字下げスタイル?コーディング作法って何?」
って感じで学生の頃はこんなコードを書いてました
void func(float *a,float *b,int n){ for(int i=0; i<n; i++){ b[i] = a[i] ; } }
いま思うと、いろいろと気になるところがある
- 変数名適当
- 基本的にスペースが無い
- なのに何故かセミコロンの前だけスペース!?
「会社に入って」
他人とコードを共有したり、参考書を読むようになってからは、ちょっとましになった思います
- 関数名とか、変数名を適当にしない
- コメント書く
- 既存のスタイルに従う(K&Rスタイルとか)
// n要素コピーする void copy(const float *src, float *dst, int n) { for (int i = 0; i < n; i++) { dst[i] = src[i]; } }
最近は
なんとなくBSDスタイルいいんじゃね?と思い始めてます
全て中括弧を次の行に置く一貫性と、if-else句の見易さが良いです
コードが長くなりがちだけど
void copy(const float *src, float *dst, int n) { for (int i = 0; i < n; i++) { dst[i] = src[i]; } if (hoge) { hogehoge(); } else { hogehogehoge(); } }
皆さんはどのスタイルを使いますか
OpenCVのMean-shift Trackingを試してみた
OpenCVで使える、色ベースのトラッキング「meanShift」と「CamShift」を紹介します!
何ができるの?
追跡したい対象の領域をはじめに指定することで、
その色情報(ヒストグラム)をもとに、対象を追跡できます
探索窓が固定なMeanShiftに対し、CamShiftは物体サイズに合わせて窓サイズを調整してくれます
試してみよう
OpenCVにCamShiftのサンプルコードがあります
(OpenCVのインストール先)/sources/samples/cpp/camshiftdemo.cpp
実行例:YouTubeから拾った動画で失礼します
OpenCV + Camshift Demonstration - YouTube
meanShiftも試してみたい
camshiftdemo.cppを少し修正すると、meanShiftも試すことができます
CamShift()の呼び出し箇所
cv::RotatedRect trackBox = cv::CamShift(backproj, trackWindow, cv::TermCriteria(cv::TermCriteria::EPS | cv::TermCriteria::COUNT, 10, 1));
を以下のように修正します
cv::meanShift(backproj, trackWindow, cv::TermCriteria(cv::TermCriteria::EPS | cv::TermCriteria::COUNT, 10, 1));
また、すぐ下の領域を描画する箇所
cv::ellipse(_image, trackBox, cv::Scalar(0, 0, 255), 3, cv::LINE_AA);
を以下のように修正します
cv::rectangle(_image, trackWindow.tl(), trackWindow.br(), cv::Scalar(0,0,255), 3, cv::LINE_AA);
終わりに
今回は「meanShift」と「CamShift」の表面だけ紹介しましたが
今後、追跡の仕組みについても解説したいと思います
社会人プログラマーになって約1年がたった
わかったのはコンピュータの世界が果てしないということ
たまに勉強すべきことが多すぎて呆然とする