在实际应用中常常需要对Mat矩阵进行按行增加或删除以及按列增加或删除,本例程提供一种方案还有其他方案欢迎大家评论区讨论
小例程cv::Mat matrix_33 = cv::Mat::eye(3, 3, CV_64FC1); cv::Mat matrix_23 = matrix_33.rowRange(0, 2); cv::Mat matrix_13 = cv::Mat(1, 3, CV_64FC1); double *matrix_13_ptr = matrix_13.ptr(); matrix_13_ptr[0] = 13.; matrix_13_ptr[1] = 14.; matrix_13_ptr[2] = 15.; //下侧添加一行 matrix_23.push_back(matrix_13); //右侧添加一列 matrix_23 = matrix_23.t(); matrix_23.push_back(matrix_13); matrix_23 = matrix_23.t();
- matrix_23下侧增加一行
[ 1 0 0 0 1 0 ] − > [ 1 0 0 0 1 0 13 14 15 ] begin{bmatrix} 1&0&0\ 0&1&0 end{bmatrix}-> begin{bmatrix} 1&0&0\ 0&1&0\ 13&14&15 end{bmatrix} [100100]−>⎣⎡101301140015⎦⎤
- matrix_23右侧添加一列
[ 1 0 0 0 1 0 13 14 15 ] − > [ 1 0 0 13 0 1 0 14 13 14 15 15 ] begin{bmatrix} 1&0&0\ 0&1&0\ 13&14&15 end{bmatrix}-> begin{bmatrix} 1&0&0&13\ 0&1&0&14\ 13&14&15&15 end{bmatrix} ⎣⎡101301140015⎦⎤−>⎣⎡101301140015131415⎦⎤
- matrix_33下方删除一列
[ 1 0 0 0 1 0 0 0 1 ] − > [ 1 0 0 0 1 0 ] begin{bmatrix} 1&0&0\ 0&1&0\ 0&0&1 end{bmatrix}-> begin{bmatrix} 1&0&0\ 0&1&0\ end{bmatrix} ⎣⎡100010001⎦⎤−>[100100]
参考opencv 二维mat矩阵增加一行_诺有缸的高飞鸟的博客-CSDN博客



