OpenCV

OutputArrayOfArraysの使い方

最近、OutputArrayOfArraysの使い方がなんとなくわかってきたので、メモ。OpenCVには関数引数用の型として、InputArrayやOutputArrayがあります。 引数をこの型にすることで、cv::Matだけでなく、vectorの値も引数に取れるようになります。 使うと関数の汎用…

cv::MatからCvMatへの変換時の注意点

C++の配列クラスからCの配列構造体への変換で嵌ったのでメモ。 正常ケース OpenCVでは以下のような方法で、 cv::MatからCvMatに変換できます。 cv::Mat eye = cv::Mat::eye(3,3,CV_8UC1); CvMat eyeC = eye; std::cout << cv::Mat(&eyeC) << std::endl; 出力…

InputArrayはスマートにメモリ管理されていない

OpenCVを使っていて嵌ったのでメモ。 cv::Matはスマートなメモリ管理が実装されているので、 cv::InputArrayも同じかと思ってたら痛い目を見た。 cv::Matの例 スマートなメモリ管理のおかげで、 func1実行時にcv::Mat::eye(3,3,CV_64FC1)が期待通り出力され…

関数オブジェクト経由でのMat型のコピー

コード書いてて嵌ったのでメモ。 cv::Mat型のデータを関数オブジェクト経由でコピーしようとしたら上手くいかなかった。 環境はVC10。 1.関数オブジェクト経由での値の代入 #include <iostream> #include <functional> void func(const int src, int& dst) {dst = src;} int main( </functional></iostream>…