en mi programa tengo una función que toma la imagen de la cámara y debe empaquetar todos los datos en la estructura OpenCV Mat
. Desde la cámara obtengo ancho, alto y unsigned char*
en el buffer de imagen. Mi pregunta es cómo puedo crear Mat a partir de estos datos, si tengo una variable Mat global. El tipo para la estructura Mat Tomé CV_8UC1.opencv crear mat a partir de los datos de la cámara
Mat image_;
function takePhoto() {
unsigned int width = getWidthOfPhoto();
unsinged int height = getHeightOfPhoto();
unsinged char* dataBuffer = getBufferOfPhoto();
Mat image(Size(width, height), CV_8UC1, dataBuffer, Mat::AUTO_STEP);
printf("width: %u\n", image.size().width);
printf("height: %u\n", image.size().height);
image_.create(Size(image.size().width, image.size().height), CV_8UC1);
image_ = image.clone();
printf("width: %u\n", image_.size().width);
printf("height: %u\n", image_.size().height);
}
Cuando pruebo mi programa, me da derecho width
y height
de image
, pero width
y height
de mi Mat mundial image_
es 0
. ¿Cómo puedo poner los datos en mi variable global Mat
varible correctamente?
Gracias.
Hola Karlphilip, muchas gracias por contribuir con stackoverflow y por ayudarnos. Soy nuevo en OpenCV y encuentro que tu respuesta es bastante útil para el proyecto en el que estoy trabajando en este momento. Tengo una pregunta rápida, ¿cuál es la diferencia entre: cv :: Mat y cvMat y cvCreateMat()? – user261002
'cv :: Mat' es el tipo de Mat para la interfaz C++ de OpenCV. 'cvMat' es para la interfaz C. 'cvCreateMat()' crea un 'cvMat' en la interfaz C. No sigamos este hilo más, si tienes preguntas, puedes preguntarlas en nuevos temas. Nos vemos. – karlphillip