Necesito establecer un solo píxel en el objeto Mat para un cierto valor.¿Cómo establecer un píxel a un valor en un objeto cv :: Mat?
¿Cómo hacerlo?
estoy usando OpenCV 2.1 con Visual Studio 2010.
Necesito establecer un solo píxel en el objeto Mat para un cierto valor.¿Cómo establecer un píxel a un valor en un objeto cv :: Mat?
¿Cómo hacerlo?
estoy usando OpenCV 2.1 con Visual Studio 2010.
Si se trata de un UCHAR (CV_8U) Matriz:
mat.at<uchar>(row, column, channel) = val;
De hecho, hay 4 tipos de métodos para obtener/set un valor de píxel en un objeto cv :: Mat como se describe en the OpenCV tutorial.
El único @ Régis mencionado se llama On-The-Fly RA en el tutorial de OpenCV. Es el más conveniente, pero también consume mucho tiempo.
Según el tutorial's experiment, también enumera las diferencias de rendimiento en los 4 métodos.
He aquí un ejemplo:
vector<cv::Point3f> xyzBuffer;
cv::Mat xyzBuffMat = cv::Mat(307200, 1, CV_32FC3);
for (int i = 0; i < xyzBuffer.size(); i++) {
xyzBuffMat.at<cv::Vec3f>(i, 1, 0) = xyzBuffer[i].x;
xyzBuffMat.at<cv::Vec3f>(i, 1, 1) = xyzBuffer[i].y;
xyzBuffMat.at<cv::Vec3f>(i, 1, 2) = xyzBuffer[i].z;
}
posible duplicado de [OpenCV obtener información de píxeles de la imagen Mat] (http://stackoverflow.com/questions/7899108/opencv-get-pixel-information-from-mat-image) – Sam
Hay muchas otras publicaciones que explican exactamente el mismo problema – Sam
Por no hablar de la documentación real de OpenCV, cuyos primeros párrafos en 'cv :: Mat' deberían cubrir esto. –