OpenCV_cv::Mat の行を指定して削除したい

経緯メモ)  要素を順次見ていき、条件が true の行だけを cv::Mat 型として欲しい。
resize だと欲しいデータにならない。

 

結論

mat.row( int ); で mat から int 行を取り出し、別 Mat へ挿入する。

    cv::Mat mv;
    mv.push_back ( mat.row( i ) );

mat が元 Mat。i は for 文などのループ変数。

 

 

軌跡

ソースは色々略。

部分行列として欲しい行を取り出し、マージすればいいのではないか。

    std::vector<cv::Mat> mv;
    mv.push_back( mat(cv::Range(i, i), cv::Range(0, 10));

mv の 各要素 Mat の rows も cols も 0 だった。
cv::Range(i, i) は NG らしい。

 

1 行取り出し、マージすればいいのではないか。

    mv.push_back( mat.row(i) );
    cv::Mat m_merged;
    cv::merge(mv, m_merged);

行列数がおかしい。
複数チャンネルを 1 Mat にする関数なので、欲しいデータになるはずがない。

 

 

こちらから。
http://opencv.jp/cookbook/opencv_mat.html#id27
http://pynote.hatenablog.com/entry/opencv_cvmat_submatrix
http://pinedge.oops.jp/tips/content.php?page=cv_mat

以上。

 

何をどうしたかったのかの経緯キャプチャ

f:id:koshinRan:20180712001015p:plain