Размер матрицы в формате OpenCV
Я знаю, что это может быть очень рудиментарно, но я новичок в OpenCV. Не могли бы вы сказать мне, как получить размер матрицы в OpenCV?. Я погуглил и все еще ищу, но если кто-то из вас знает ответ, Пожалуйста, помогите мне.
размер, количество строк и столбцов.
и есть ли способ непосредственно получить максимальное значение 2D матрицы?
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