matrixOpenCV的大小

我知道这可能是非常基本的,但我是OpenCV的新手。 你能告诉我如何获得OpenCVmatrix的大小吗? 我GOOGLE了,我仍然在寻找,但如果你们中的任何一个知道答案,请帮助我。

大小与行数和列数一样。

有没有办法直接获得二维matrix的最大值?

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

请注意,除了行和列之外,还有许多通道和types。 当明确什么types时,通道可以像CV_8UC3那样充当一个额外的维度,因此您可以将matrix定义为

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

所以基本types元素的大小是M.rows * M.cols * M.cn

find可以使用的最大元素

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

一个完整的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; } 

对于2Dmatrix:

mat.rows – 二维数组中的行数。

mat.cols – 二维数组中的列数。

或者:C ++:Size Mat :: size()const

该方法返回一个matrix大小:大小(cols,rows)。 当matrix超过2维时,返回的大小是(-1,-1)。

对于多维matrix,您需要使用

 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表示尺寸的顺序。 x指数变化最快。

这里是由imoutidi – >给出的ocv3-python答案。