Размер матрицы в формате OpenCV



Я знаю, что это может быть очень рудиментарно, но я новичок в OpenCV. Не могли бы вы сказать мне, как получить размер матрицы в OpenCV?. Я погуглил и все еще ищу, но если кто-то из вас знает ответ, Пожалуйста, помогите мне.



размер, количество строк и столбцов.



и есть ли способ непосредственно получить максимальное значение 2D матрицы?

608   5  

5 ответов:

cv:Mat mat;
int rows = mat.rows;
int cols = mat.cols;

cv::Size s = mat.size();
rows = s.height;
cols = s.width;

обратите внимание, что кроме строк и столбцов существует ряд каналов и типов. Когда ясно, что такое тип, каналы могут выступать в качестве дополнительного измерения, как в CV_8UC3, поэтому вы должны обращаться к матрице как

uchar a = M.at<Vec3b>(y, x)[i];

поэтому размер в плане элементов элементарный тип строки М. * М. перевалов * М. спицы

чтобы найти максимальный элемент можно использовать

Mat src;
double minVal, maxVal;
minMaxLoc(src, &minVal, &maxVal);

для 2D матрицы:

мат.rows-количество строк в 2D массиве.

мат.cols-количество столбцов в 2D массиве.

или: C++: Size Mat:: size () const

метод возвращает размер матрицы: размер (cols, строки). Если матрица более чем 2-мерная, возвращаемый размер равен (-1, -1).

для многомерной матрицы необходимо использовать

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;

обратите внимание, здесь 2 для оси z, 3 для оси y, 4 для оси x. По x, y, z, it означает порядок размеров. индекс x изменяется быстрее всего.

полный пример кода на C++, может быть полезно для начинающих

#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;
}

Если вы используете python, то (если ваше имя матрицы мат): мат.форма - дает вам массив типа- [высота, ширина, каналы] мат.размер - дает вам размер массива Пример Кода:

import cv2
mat = cv2.imread('sample.png')
height, width, channel = mat.shape[:3]
size = mat.size

Comments

    Ничего не найдено.