LoginSignup
13
16

More than 5 years have passed since last update.

超便利!cv::formatについて

Posted at

cv::formatとは

cv::Matの中身を様々なフォーマットで出力してくれる便利関数です.
デフォルトスタイル,python,numpy,csv,c言語の配列スタイルの出力フォーマットを選択できます.
実験の結果を吐き出して,エクセルでざっくりとグラフにしたい時とかに便利です.
OpenCV3.1の公式ドキュメントはこちらからどうぞ.

出力フォーマットの設定は,2.0と3.0では違うので注意が必要です.
2.0での使用方法は,こちらに書いてあります.
2.0では,文字列での指定でしたが,3.0からはcore.hppにFormatterクラスがあり,
そこに各フォーマットの列挙子があります.

Format OpenCV2.0 OpenCV3.0
default ";" FMT_DEFAULT
python "python" FMT_PYTHON
numpy "numpy" FMT_NUMPY
csv "csv" FMT_CSV
C "c" FMT_C
MATLAB 未対応 FMT_MATLAB

以下にサンプルです.
テスト画像からSURF特徴量を取得して,特徴記述子の中身をCSVファイルに書き出しています.

#include<iostream>
#include<vector>
#include<fstream>
#include"OpenCV31.h" //opencvのインクルード

using namespace std;
using namespace cv;

int main(int argv,char **argc)
{
    cv::Mat img = cv::imread("test1.png",cv::IMREAD_GRAYSCALE);

    Ptr<cv::xfeatures2d::SIFT> sift = cv::xfeatures2d::SIFT::create();

    vector<KeyPoint> keyp;
    cv::Mat desc;
    sift->detectAndCompute(img, cv::Mat(), keyp, desc);

    ofstream ofs("sift.csv");
    ofs << cv::format(desc, cv::Formatter::FMT_CSV) << endl;

    cv::imshow("src", img);
    cv::waitKey();

    return 0;
}

これを知るまでforループでがりがり書いて出力してました・・・
以上です.

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16