昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 965|回复: 0
收起左侧

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

[复制链接]

239

主题

241

帖子

926

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
926
昊虹君 发表于 2022-10-17 11:46 | 显示全部楼层 |阅读模式
OpenCV_Mat类对象常用属性值的获取方法

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

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

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

示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹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);
}

运行结果如下图所示:


02-获取矩阵的type
在OpenCV中矩阵的每一种type用一个常数表示。
可以用Mat类的成员函数type()获取矩阵的type。
示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹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);
}

运行结果如下:

从上面的运行结果我们可以看出,CV_8UC1对应的type值为0,而CV_8UC2对应的type值为8。


03-获取矩阵的通道数
可以用Mat类的成员函数channels()获取矩阵的通道数。
示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹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);
}

运行结果如下:



04-获取矩阵元素的数据类型
可以利用Mat类的成员函数depth()获取矩阵元素的数据类型。
示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹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;
}


运行结果如下:


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

示例代码如下:
[C++] 纯文本查看 复制代码
//出处:昊虹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;
}


运行结果如下:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2022024117号-1 )

GMT+8, 2024-4-30 04:05 , Processed in 0.062144 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表