cv::OutputArrayの使い方(効率悪い)

今日は,cv::InputArray/cv::OutputArrayを入出力とする簡単な関数の作り方.
はじめ使い方がよくわからなかったので効率の悪い使い方をしていた.
まずはそれの紹介から.
例えば,全要素に1足す関数 plus1(cv::InputArray in, cv::OutputArray out) を作るとする.

void plus1(cv::InputArray in, cv::OutputArray out){
    cv::Mat img=in.getMat();
    cv::Mat pls=img+1;
    pls.copyTo(out);
}

cv::OutputArrayには直接代入が出来ないので,copyToを使ってコピーしていた.
ただし,処理の最後にOpenCVに入っている関数を呼び出すのであればこれで良い.
例えば

void fliteredplus1(cv::InputArray in, cv::OutputArray out){
    cv::Mat img=in.getMat();
    cv::Mat pls=img+1;
    cv::medianBlur(pls, out, 3);

こんな感じであれば問題ない…と思う.
で,正しい(最後にOpenCVの関数を呼び出さない場合の)使い方は次回.

コメントする