c++ - convertto - Actualización de una submatriz de Mat en OpenCV
opencv mat step (2)
Primero, debes crear una matriz que apunte a la original:
Mat orig(13,6,CV_32FC1, Scalar::all(0));
Mat roi(orig(cv::Rect(1,1,4,3))); // now, it points to the original matrix;
Mat otherMatrix = Mat::eye(4,3,CV_32FC1);
roi.setTo(5); // OK
roi = 4.7f; // OK
otherMatrix.copyTo(roi); // OK
Tenga en cuenta que cualquier operación que implique atribución directa, con el signo "=" de otra matriz, cambiará la fuente de la matriz roi de orig a esa otra matriz.
// Wrong. Roi will point to otherMatrix, and orig remains unchanged
roi = otherMatrix;
Estoy trabajando con OpenCV y C ++. Tengo una matriz X como esta
Mat X = Mat::zeros(13,6,CV_32FC1);
y quiero actualizar solo una submatriz 4x3, pero tengo dudas sobre cómo acceder a esa matriz de manera eficiente.
Mat mat43= Mat::eye(4,3,CV_32FC1); //this is a submatrix at position (4,4)
¿Debo cambiar elemento por elemento?
Una de las formas más rápidas es establecer una matriz de encabezado que apunte al rango de columnas / filas que desea actualizar, como este:
Mat aux = X.colRange(4,7).rowRange(4,8); // you are pointing to submatrix 4x3 at X(4,4)
Ahora puede copiar su matriz a aux (pero en realidad la copiará a X, porque aux es solo un puntero):
mat43.copyTo(aux);
Eso es.