Skip to content

Latest commit

 

History

History
371 lines (268 loc) · 13.1 KB

File metadata and controls

371 lines (268 loc) · 13.1 KB

OpenCV 2.4.0 のサンプルソースの一覧(samples/cpp)

OpenCV 2.4.0 に添付されているサンプルコードがどんなものなのか概観できるようにするためのリストです。

「OpenCV.jp : OpenCV逆引きリファレンス( http://opencv.jp/cookbook/ )」で同等の機能の解説がフォローされているものについては、そちらへのURLを記載します。

  • cout_mat.cpp

    行列の標準出力(std::cout)のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • filestorage.cpp

    ファイルストレージのサンプル。任意の構造をyamlやxmlに書き出す。

    (OpenCV逆引きリファレンスでフォローされている)

  • image.cpp

    画像を格納するデータ型の相互変換のサンプル。IplImageからcv::Mat、cv::vectorへの変換。 表色系の変換。ピクセルへのアクセス方法等。

    (OpenCV逆引きリファレンスでフォローされている)

  • imagelist_creator.cpp

    画像ファイルのリストをyaml / xml フォーマットで出力するサンプル。サンプルというよりもむしろ画像ファイルの集合を利用する他のサンプルへのデータ作成に使用する。

  • opencv_version.cpp

    バージョン情報の出力

    (OpenCV逆引きリファレンスでフォローされている)

  • starter_imagelist.cpp

    imagelist.cppで作成したファイルからの画像の読み込みサンプル。画像ファイルをすべてコマンドライン引数で指定するのは大変なので、こうやって保存してこうやって読み込みましょうというお話。

  • starter_video.cpp

    動画ファイルあるいはビデオデバイス(カメラやキャプチャカード)からの動画読み込みと、フレームの保存のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • drawing.cpp

    線分、円、楕円、矩形、塗りつぶしの描画処理のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • gencolors.cpp

    cv::generateColors()を利用した任意の個数の異なる色を生成するサンプル。データ可視化などのために異なるラベル色を作ったりするのに使う。

  • ffilldemo.cpp

    フラッドフィルのサンプル。cv::floodFill() を用いて連結成分の塗りつぶしを行う。

  • edge.cpp

    Cannyエッジ抽出のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • demhist.cpp

    ヒストグラム算出のサンプル。指定した画像ファイルのグレイスケール値のヒストグラムを算出しグラフを表示する。輝度、コントラストをスライドバーで変化させ、ヒストグラムがどのように変形するかを見ることもできる。

    (OpenCV逆引きリファレンスでフォローされている) - http://opencv.jp/cookbook/opencv_img.html#id34

  • dft.cpp

    離散フーリエ変換(DFT)のサンプル。指定した画像ファイルのDFT/逆DFTの結果画像を表示する。

  • laplace.cpp

    ラプラシアンフィルタのサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • logpolar_bsm.cpp

    Log-Polar変換のサンプル

  • morphology2.cpp

    モルフォロジー変換のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • inpaint.cpp

    inpainting。cv::inpaint()を使用したノイズ除去、欠損画像補完のサンプル。 マウスドラッグによって塗りつぶした画像の領域を、その周囲の画素値にしたがって補完する。

    (OpenCV逆引きリファレンスでフォローされている)

  • meanshift_segmentation.cpp

    mean-shiftによるカラーセグメンテーションのサンプル。cv::pyrMeanShiftFiltering()を用いて入力画像を色でセグメンテーションしている。

  • em.cpp
    EM法による分布の推定のサンプル
  • kalman.cpp
    カルマンフィルタのサンプル
  • kmeans.cpp
    kmeansクラスタリングのサンプル
  • points_classifier.cpp
    点分類機の作成
  • convexhull.cpp

    座標群の凸包算出のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • delaunay2.cpp

    ドロネー図・ボロノイ図算出のサンプル。ランダムな点群からドロネー三角形分割を逐次的に行う。ドロネー三角形分割からボロノイ領域の算出を行う。

  • distrans.cpp

    距離変換のサンプル

  • minarea.cpp

    座標群の最小包含矩形・最小包含円の算出のサンプル

    (OpenCV逆引きリファレンスでフォローされている)

  • contours2.cpp

    輪郭抽出のサンプル。

    (OpenCV逆引きリファレンスでフォローされている)

  • connected_components.cpp

    輪郭ベースの接続領域抽出のサンプル

    しきい値で二値化した画像の白領域の連結領域の抽出を行うサンプル。 cv::findContours() でトップレベルの輪郭を抽出し、それを塗りつぶして連結領域として表示している。 また二値化は cv::Mat と double の比較演算子のオーバーロードを使用している。単純な数値比較による二値化を簡潔に記述するサンプルでもある。

    (OpenCV逆引きリファレンスでフォローされている)

  • fitellipse.cpp

    楕円当てはめのサンプル。抽出した輪郭に cv::fitEllipse() で楕円当てはめを行う。

    (OpenCV逆引きリファレンスでフォローされている)

  • squares.cpp

    四角形抽出のサンプル。Cannyエッジ画像から抽出した輪郭成分を cv::approxPolyDP() で多角形近似し、近似結果の角の数が4つのものを4角形として表示している。

    画像ピラミッドを用いたノイズ除去やCannyエッジによるグラデーションのある形状の輪郭抽出の工夫も参考になる。

  • houghcircles.cpp

    ハフ変換による円の検出のサンプル。

    cv::HoughCircles() によりグレイスケール画像から円を検出する。

    (OpenCV逆引きリファレンスでフォローされている)

  • houghlines.cpp

    ハフ変換による線分の検出処理のサンプル。

    cv::HoughLinesP() により、エッジ画像から線分を検出する。

    (OpenCV逆引きリファレンスでフォローされている)

  • peopledetect.cpp

    HOG/SVMによる人検出のサンプル。

    (OpenCV逆引きリファレンスでフォローされている)

  • video_dmtx.cpp

    Data Matrix の検出とデコードのサンプル。

    ビデオデバイスから Data Matrix を検出、デコードして表示する。スペースキーで表示している画像を保存できる。

    cv::findDataMatrix() の使用により、読み取れるのは3文字のテキストのData Matrixに限られる。

    検出関数 cv::findDataMatrix(), 描画関数 cv::drawDataMatrixCodes()。

    参考

  • bgfg_segm.cpp

    混合ガウスモデルの背景差分による動体検出のサンプル。

    cv::BackgroundSubtractorMOG2 を使用している。

  • segment_objects.cpp

    混合ガウスモデルの背景差分による動体検出のサンプル。

    cv::BackgroundSubtractorMOG を使用している。

  • camshiftdemo.cpp

    CamShiftによる領域追跡のサンプル。

  • lkdemo.cpp

    LKトラッキングのサンプル。

  • phase_corr.cpp

    ビデオから画像全体の並進移動を検出するサンプル。 カメラの前に印刷物などをかざして動かすと動作がよくわかる。

    cv::phaseCorrelate() を使用している。

  • matcher_simple.cpp

    SURF特徴量のマッチングのサンプル。二つの画像からそれぞれSURF特徴量を抽出し、対応をとる。

    総当たりでマッチングをとる cv::BFMatcher が使用されている。

    (OpenCV逆引きリファレンスでSURF特徴量の扱いについて解説されている)

  • matching_to_many_images.cpp

    SURF特徴量のマッチングのサンプルその2。

    起動方法:

    matching_to_many_images 特徴点検出の種類 特徴量計算の種類 問い合わせ画像 訓練画像をリストしたテキストファイル 結果画像を出力するディレクトリ
    
    • 特徴点検出の種類に指定できるアルゴリズム : STAR, FAST, MSER, ORB, GFTT, HARRIS, Dense
    • 特徴量計算に指定できるアルゴリズム : BRIEF, ORB, FREAK

    以下のディレクトリ構成を想定する。:

    ./test/query/query_image.jpg
    ./test/train/train_image1.jpg
    ./test/train/train_image2.jpg
    ./test/train/train_image3.jpg
    ./test/train/train_image4.jpg
    ./test/train/train.txt
    ./test/result/
    

    train.txt の内容:

    train_image1.jpg
    train_image2.jpg
    train_image3.jpg
    train_image4.jpg
    

    ディレクトリ test に移動して以下の様に起動する。:

    matching_to_many_images ORB ORB ./query/query_image.jpg ./train/train.txt ./result
    

    result 以下に問い合わせ画像と各訓練画像の特徴量の対応をとった結果画像が保存される。

  • 3calibration.cpp
    キャリブレーション関係(環境がない)
  • calibration.cpp
    カメラキャリブレーションのサンプル
  • calibration_artificial.cpp
    カメラキャリブレーションのサンプル、人工画像で模擬的に行っているらしい
  • stereo_calib.cpp
    ステレオカメラの校正
  • stereo_match.cpp
    ステレオマッチング
  • grabcut.cpp
    grabcut デモ
  • stitching.cpp
    イメージスティッチング
  • stitching_detailed.cpp
    より詳細な設定のできるイメージスティッチング
  • OpenEXRimages_HighDynamicRange_Retina_toneMapping.cpp
    OpenEXR関係(環境がない)
  • OpenEXRimages_HighDynamicRange_Retina_toneMapping_video.cpp
    OpenEXR関係(環境がない)
  • hybridtrackingsample.cpp
    SIFTの実装が必要
  • linemod.cpp
    OpenNI関係
  • openni_capture.cpp
    OpenNI関係
  • bagofwords_classification.cpp
    Bag of Words分類器 実行がちょっと面倒
  • brief_match_test.cpp
    BriefExtractorを用いたマッチング
  • build3dmodel.cpp
    ロドリゲス変換のサンプル、ただし未完成で置換予定
  • descriptor_extractor_matcher.cpp
    特徴量によるマッチング、要調査
  • detection_based_tracker_sample.cpp
    要調査
  • detector_descriptor_evaluation.cpp
    要調査
  • detector_descriptor_matcher_evaluation.cpp
    要調査
  • facerec_demo.cpp
    顔認識デモ
  • fback.cpp
    dense optical flow のデモ Gunner Farneback
  • generic_descriptor_match.cpp
    ジェネリックデスクリプタのデモ
  • latentsvm_multidetect.cpp
    latentSVM 検出のデモ
  • letter_recog.cpp
    文字認識のデモ
  • multicascadeclassifier.cpp
    複数の分類器のカスケーディング
  • point_cloud.cpp
    ポイントクラウドの描画?
  • retinaDemo.cpp
    Gipsa/Listic Labs retina model のデモ
  • rgbdodometry.cpp
    RGBD(深度付き画像)でのオドメトリ
  • select3dobj.cpp
    オブジェクトのデータセットとそのセグメンテーションマスクの収集
  • video_homography.cpp
    特徴量ベースのビデオ処理
  • videostab.cpp
    ちょっと不明
  • watershed.cpp
    色セグメンテーション