convertto - Tamaño de Matrix OpenCV
mat opencv c++ (5)
Sé que esto podría ser muy rudimentario, pero soy nuevo en OpenCV. ¿Podría decirme cómo obtener el tamaño de una matriz en OpenCV? Busqué en Google y sigo buscando, pero si alguno de ustedes sabe la respuesta, por favor, ayúdenme.
Tamaño como en cantidad de filas y columnas.
¿Y hay una manera de obtener directamente el valor máximo de una matriz 2D?
Para matriz 2D:
mat.rows - Número de filas en una matriz 2D.
mat.cols - Número de columnas en una matriz 2D.
O bien: C ++: Tamaño Mat :: tamaño () const
El método devuelve un tamaño de matriz: Tamaño (cols, rows). Cuando la matriz es más que bidimensional, el tamaño devuelto es (-1, -1).
Para la matriz multidimensional, debes usar
int thisSizes[3] = {2, 3, 4};
cv::Mat mat3D(3, thisSizes, CV_32FC1);
// mat3D.size tells the size of the matrix
// mat3D.size[0] = 2;
// mat3D.size[1] = 3;
// mat3D.size[2] = 4;
Tenga en cuenta, aquí 2 para eje z, 3 para eje y, 4 para eje x. Por x, y, z, significa el orden de las dimensiones. x índice cambia más rápido.
Si está utilizando Python, entonces (si su nombre de matriz es mat ): mat.shape - le da una matriz del tipo- [height, width, channels] mat.size - le da el tamaño de la matriz Sample Code:
import cv2
mat = cv2.imread(''sample.png'')
height, width, channel = mat.shape[:3]
size = mat.size
Tenga en cuenta que, aparte de las filas y columnas, hay una cantidad de canales y tipos. Cuando está claro qué tipo es, los canales pueden actuar como una dimensión adicional como en CV_8UC3, por lo que abordaría una matriz como
uchar a = M.at<Vec3b>(y, x)[i];
Entonces, el tamaño en términos de elementos de tipo elemental es M.rows * M.cols * M.cn
Para encontrar el elemento máximo uno puede usar
Mat src;
double minVal, maxVal;
minMaxLoc(src, &minVal, &maxVal);
Un ejemplo completo de código de C ++, puede ser útil para los principiantes
#include <iostream>
#include <string>
#include "opencv/highgui.h"
using namespace std;
using namespace cv;
int main()
{
cv:Mat M(102,201,CV_8UC1);
int rows = M.rows;
int cols = M.cols;
cout<<rows<<" "<<cols<<endl;
cv::Size sz = M.size();
rows = sz.height;
cols = sz.width;
cout<<rows<<" "<<cols<<endl;
cout<<sz<<endl;
return 0;
}
cv:Mat mat;
int rows = mat.rows;
int cols = mat.cols;
cv::Size s = mat.size();
rows = s.height;
cols = s.width;