OpenCVの新しいバージョン(3.0)では,様々なところで変更があって,いろんなアルゴリズムが入出力としてcv::InputArrayとcv::OutputArrayを使うようになっている.
cv::InputArray/cv::OutputArrayは,std::vectorやcv::Matやstd::vector
なので,例えば cv::threshold だと,cv::Matを入力として
cv::Mat img, out; cv::threshold(img, out, 10, 255, cv::THRESH_BINARY);
このように使ったり,std::vectorを入力として
std::vector<double> img; cv::Mat out; cv::threshold(img, out, 10, 255, cv::THRESH_BINARY);
このように使うことができる.
また,受け取る側のcv::OutputArrayも同様なので,先ほどの例だと受け取る側を
cv::Mat img; std::vector<unsigned char> out; cv::threshold(img, out, 10, 255, cv::THRESH_BINARY);
のようにstd::vectorにしたりもできる.
次回はこのようなcv::InputArray/cv::OutputArrayを入出力とする関数を自作する方法について書く.