我知道這可能是非常基本的,但我是OpenCV的新手。你能告訴我如何在OpenCV中獲得矩陣的大小嗎?我搜索了一下,但我仍在搜索,但如果你們中有人知道答案,請幫助我。矩陣的大小OpenCV
大小與行數和列數一樣。
有沒有辦法直接獲得二維矩陣的最大值?
我知道這可能是非常基本的,但我是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);
這是解決查找OpenCV Mat中最大元素的唯一答案。 – rayryeng
對於二維矩陣:
mat.rows - 行中的2D陣列的數量。
mat.cols - 二維數組中的列數。
或者: C++:尺寸墊::尺寸()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表示尺寸的順序。 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,然後(如果你的矩陣名稱爲墊): mat.shape - 給你所述類型 - 的陣列[高度,寬度,通道] mat.size - 給你陣列 樣本代碼的大小:
import cv2
mat = cv2.imread('sample.png')
height, width, channel = mat.shape[:3]
size = mat.size
這個問題沒有表明Python包裝正在被使用。 – rayryeng
鏈接到文檔:http://docs.opencv.org/modules/core/doc/basic_structures.html#mat-size – brotherofken