push_back convertto bitwise_and c++ opencv

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.