矩阵OpenCV的大小

矩阵OpenCV的大小,opencv,opencv-mat,Opencv,Opencv Mat,我知道这可能是非常初级的,但我是OpenCV新手。你能告诉我如何在OpenCV中获得矩阵的大小吗?。我在谷歌上搜索,我还在搜索,但如果你们中有人知道答案,请帮助我 大小与行数和列数相同 有没有办法直接获得2D矩阵的最大值?注意,除了行和列之外,还有许多通道和类型。当清楚类型是什么时,通道可以充当CV_8UC3中的额外维度,因此您可以将矩阵作为 cv:Mat mat; int rows = mat.rows; int cols = mat.cols; cv::Size s = mat.size(

我知道这可能是非常初级的,但我是OpenCV新手。你能告诉我如何在OpenCV中获得矩阵的大小吗?。我在谷歌上搜索,我还在搜索,但如果你们中有人知道答案,请帮助我

大小与行数和列数相同


有没有办法直接获得2D矩阵的最大值?

注意,除了行和列之外,还有许多通道和类型。当清楚类型是什么时,通道可以充当CV_8UC3中的额外维度,因此您可以将矩阵作为

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

cv::Size s = mat.size();
rows = s.height;
cols = s.width;
uchar a = M.at<Vec3b>(y, x)[i];
对于二维矩阵:

mat.rows–二维阵列中的行数

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

或: C++:Size Mat::Size()常量

该方法返回一个矩阵大小:size(cols,rows)。当矩阵大于二维时,返回的大小为(-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表示尺寸的顺序。x指数变化最快。

< P>一个完整的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;
}
#包括
#包括
#包括“opencv/highgui.h”
使用名称空间std;
使用名称空间cv;
int main()
{
cv:Mat M(102201,cv_8UC1);
int行=M行;
int cols=M.cols;

cout如果您使用的是Python包装器,那么(假设您的矩阵名为mat):

  • mat.shape为您提供了一个类型数组-[高度、宽度、通道]

  • mat.size提供数组的大小

示例代码:

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

文档链接:这两个是完全相同的吗?它们之间有什么区别?注释似乎令人困惑,出于某种原因提到了步幅。是的,有人编辑了答案,添加了步幅的奇怪之处。我已经将其回滚。这是唯一一个解决在OpenCV垫子中找到最大元素的答案。请澄清,没有
Mat::size()
member方法,而是类型为的成员变量。后者重载圆括号运算符以返回对象我们如何获得cpp中矩阵的深度?
import cv2
mat = cv2.imread('sample.png')
height, width, channel = mat.shape[:3]
size = mat.size