昊虹君 发表于 2022-10-17 11:46

OpenCV_Mat类对象常用属性值的获取方法

OpenCV_Mat类对象常用属性值的获取方法

目录

[*]01-获取矩阵的size(列数、行数)
[*]02-获取矩阵的type
[*]03-获取矩阵的通道数
[*]04-获取矩阵元素的数据类型
[*]05-获取矩阵的行数或列数

01-获取矩阵的size(列数、行数)

可利用Mat类的成员函数Mat::size()获取矩阵的矩阵的size(列数、行数)

示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

        Mat A1 = Mat::zeros(2, 3, CV_8UC1);


        cout << "A1中的数据为:\n" << A1 << endl << endl;
        cout << "A1的size为:\n" << A1.size() << endl << endl;



        return(0);
}

运行结果如下图所示:
http://pic1.hhai.cc/pic1/2022/2022-10/0006/011.png

02-获取矩阵的type
在OpenCV中矩阵的每一种type用一个常数表示。
可以用Mat类的成员函数type()获取矩阵的type。
示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

        Mat A1 = Mat::zeros(2, 3, CV_8UC1);
        Mat B1 = Mat::zeros(2, 3, CV_8UC2);

        cout << "A1的type为:\n" << A1.type() << endl << endl;
        cout << "B1的type为:\n" << B1.type() << endl << endl;

        return(0);
}

运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-10/0006/012.png
从上面的运行结果我们可以看出,CV_8UC1对应的type值为0,而CV_8UC2对应的type值为8。


03-获取矩阵的通道数
可以用Mat类的成员函数channels()获取矩阵的通道数。
示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{

        Mat A1 = Mat::zeros(2, 3, CV_8UC1);
        Mat B1 = Mat::zeros(2, 3, CV_8UC2);

        cout << "A1的通道数为:\n" << A1.channels() << endl << endl;
        cout << "B1的通道数为:\n" << B1.channels() << endl << endl;


        return(0);
}

运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-10/0006/013.png


04-获取矩阵元素的数据类型
可以利用Mat类的成员函数depth()获取矩阵元素的数据类型。
示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>


int main()
{
        cv::Mat image1(2, 2, CV_8UC1, cv::Scalar(9));
        cv::Mat image2(2, 2, CV_8SC1, cv::Scalar(9));
        cv::Mat image3(2, 2, CV_16UC1, cv::Scalar(9));
        cv::Mat image4(2, 2, CV_16SC1, cv::Scalar(9));
        cv::Mat image5(2, 2, CV_32SC1, cv::Scalar(9));
        cv::Mat image6(2, 2, CV_32FC1, cv::Scalar(9));
        cv::Mat image7(2, 2, CV_64FC1, cv::Scalar(9));

        std::cout << "image1 depth:" << image1.depth() << std::endl << std::endl;
        std::cout << "image2 depth:" << image2.depth() << std::endl << std::endl;
        std::cout << "image3 depth:" << image3.depth() << std::endl << std::endl;
        std::cout << "image4 depth:" << image4.depth() << std::endl << std::endl;
        std::cout << "image5 depth:" << image5.depth() << std::endl << std::endl;
        std::cout << "image6 depth:" << image6.depth() << std::endl << std::endl;
        std::cout << "image7 depth:" << image7.depth() << std::endl << std::endl;

        return 0;
}


运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-10/0006/014.png

05-获取矩阵的行数或列数
成员属性rows和cols用于存储矩阵的行数或列数。

示例代码如下:

//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术

//博主微信/QQ 2487872782
//QQ群 271891601
//欢迎技术交流与咨询

//OpenCV版本 OpenCV3.0

#include <opencv2/opencv.hpp>
#include <iostream>


int main()
{
        cv::Mat Image1(10, 8, CV_8UC1, cv::Scalar(5));
        // 矩阵的行数和列数获取
        std::cout << "Image1 row: " << Image1.rows << std::endl << std::endl;
        std::cout << "Image1 col: " << Image1.cols << std::endl << std::endl;

        return 0;
}


运行结果如下:
http://pic1.hhai.cc/pic1/2022/2022-10/0006/015.png
页: [1]
查看完整版本: OpenCV_Mat类对象常用属性值的获取方法