矩阵OpenCV的大小



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

以行数和列数为单位的大小。

是否有一种方法可以直接获得二维矩阵的最大值?

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];

表示元素类型的大小为M.rows * M.cols * M.cn

可以使用

查找最大元素
Mat src;
double minVal, maxVal;
minMaxLoc(src, &minVal, &maxVal);

对于二维矩阵:

垫子上。rows - 2D数组中的行数。

垫子上。cols - 2D数组中的列数。

或者:c++: Size Mat:: Size () const

方法返回一个矩阵大小:size (cols, rows)。当矩阵大于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,它表示维度的顺序。X索引变化最快

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

  • 垫子上。shape给出了一个类型为- [height, width, channels]的数组

  • 垫子上。size给出数组的大小

示例代码:

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

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

相关内容

  • 没有找到相关文章

最新更新