OpenCV_Mat类对象常用属性值的获取方法
可利用Mat类的成员函数Mat::size()获取矩阵的矩阵的size(列数、行数)
示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//博主微信/QQ 2487872782
//欢迎技术交流与咨询
//OpenCV版本 OpenCV3.0
#include
#include
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);
}
运行结果如下图所示:
从上面的运行结果可以看出,通过函数size(),我们获取到了矩阵A1的列数和行数。
在OpenCV中矩阵的每一种type用一个常数表示。
可以用Mat类的成员函数type()获取矩阵的type。
示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//博主微信/QQ 2487872782
//欢迎技术交流与咨询
//OpenCV版本 OpenCV3.0
#include
#include
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。
可以用Mat类的成员函数channels()获取矩阵的通道数。
示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//博主微信/QQ 2487872782
//欢迎技术交流与咨询
//OpenCV版本 OpenCV3.0
#include
#include
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);
}
运行结果如下:
可以利用Mat类的成员函数depth()获取矩阵元素的数据类型。
示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//博主微信/QQ 2487872782
//欢迎技术交流与咨询
//OpenCV版本 OpenCV3.0
#include
#include
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;
}
运行结果如下:
成员属性rows和cols用于存储矩阵的行数或列数。
示例代码如下:
//出处:昊虹AI笔记网(hhai.cc)
//用心记录计算机视觉和AI技术
//博主微信/QQ 2487872782
//欢迎技术交流与咨询
//OpenCV版本 OpenCV3.0
#include
#include
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;
}
运行结果如下: