最終更新:2019-02-18 (月) 14:23:03 (2d)  

cv::Mat はてなブックマークを見る
Top / cv::Mat

  • OpenCV 2.0からはC++ Interfaceに対応され、「cv」という名前空間が登場しました。
  • これまで画像データはIplImage構造体で管理されていましたが、C++ Interfaceではcv::Matというクラスで管理されるようになります。(従来のIplImageも使用可能です。)

生の画素

  • Mat.data

メモ

メモリの管理

  • OpenCVの以前のバージョンと異なり,ほとんどの関数において,関数呼び出しの前に出力用の領域を確保しておく必要はありません. 多くの関数は,関数内で適切なサイズ,型,ビット深度のcv::Matを確保します
  • また、cv::Matは,そのデータ領域がどこからも参照されなくなると,自動的にメモリを解放します
  • http://opencv.jp/cookbook/opencv_mat.html

タイプ

ベース

  • CV_8U
  • CV_8S?
  • CV_16U?
  • CV_16S?
  • CV_32S?
  • CV_32F?
  • CV_64F?
  • CV_USRTYPE1?

複合

  • 1ch2ch3ch4ch(n)ch
    8bit unsignedCV_8UC1?CV_8UC2?CV_8UC3CV_8UC4?CV_8UC(n)?
    8bit signedCV_8SC1?CV_8SC2?CV_8SC3?CV_8SC4?CV_8SC(n)?
    16bit unsignedCV_16UC1?CV_16UC2?CV_16UC3?CV_16UC4?CV_16UC(n)?
    16bit signedCV_16SC1?CV_16SC2?CV_16SC3?CV_16SC4?CV_16SC(n)?
    32bit unsignedCV_32UC1?CV_32UC2?CV_32UC3?CV_32UC4?CV_32UC(n)?
    32bit signedCV_32SC1?CV_32SC2?CV_32SC3?CV_32SC4?CV_32SC(n)?
    32bit floatCV_32FC1?CV_32FC2?CV_32FC3?CV_32FC4?CV_32FC(n)?
    64bit floatCV_64FC1?CV_64FC2?CV_64FC3?CV_64FC4?CV_64FC(n)?

クラス

コンストラクタ

  • Mat ()
    Mat (int rows, int cols, int type)
    Mat (Size size, int type)
    Mat (int rows, int cols, int type, const Scalar &s)
    Mat (Size size, int type, const Scalar &s)
    Mat (int ndims, const int *sizes, int type)
    Mat (int ndims, const int *sizes, int type, const Scalar &s)
    Mat (const Mat &m)
    Mat (int rows, int cols, int type, void *data, size_t step=AUTO_STEP)
    Mat (Size size, int type, void *data, size_t step=AUTO_STEP)
    Mat (int ndims, const int *sizes, int type, void *data, const size_t *steps=0)
    Mat (const Mat &m, const Range &rowRange, const Range &colRange=Range::all())
    Mat (const Mat &m, const Rect &roi)
    Mat (const Mat &m, const Range *ranges)

オペレータ

  • Mat operator() (const cv::Rect &roi) const
    Mat operator() (const cv::Range? *ranges) const

関数

チートシート

基本処理

コピー

  • =で代入すると浅いコピーが行われ、データが共有される
  • 別データとしてコピーするにはcv::Mat::cloneを使う。

参考

関連