《OpenCV获取图像属性(行高、列宽、通道数等)》
Mat类矩阵类型说明
Mat类矩阵类型可以是CV_8UC3、CV_16SC1...CV_64FC3等。里面的8U表示8位无符号整数(0~255),16S表示16位有符号整数(-32768~32767),64F表示64位浮点double类型数据,C后面的数表示通道数,例如C1表示一个通道的图像,C3表示3个通道的图像。通道一般只有1、3、4,1个通道表示灰度图(0-255),3个通道为RGB图像(0-255,0-255,0-255),4个通道为RGBA(其中A代表透明度)。
获取图像常用属性
通过调用Mat类的公有成员变量,可以获取图像的标志位、尺寸、行高、列宽、图像维度等常用属性。
#include "opencv2/opencv.hpp"
#include "iostream"
using namespace std;
using namespace cv;
#define WINDOW_NAME "image"
int main()
{
namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);
Mat image;
//image = imread("E:\\vs2015_opencv\\opencv_获取图像参数\\opencv_获取图像参数\\OpenCV.jpg");
image = Mat(240,320,CV_8UC3,Scalar(135,255,135));
cout << "-------------------- 打印图像参数 ----------------------"<<endl;
//标志位
cout << "flags:" << image.flags << endl;
//图像尺寸
cout << "size:" << image.size << endl;
//列宽
cout << "clos:" << image.cols<<endl;
//行高
cout << "rows:" << image.rows << endl;
//维度
cout << "dims:" << image.dims << endl;
imshow(WINDOW_NAME,image);
waitKey(0);
return 0;
}
-------------------- 打印图像参数 ----------------------
flags:1124024336
size:240 x 320
clos:320
rows:240
dims:2
Mat类常用函数
channels函数原型
int Mat::channels() const
{
return CV_MAT_CN(flags);
}
示例代码
#include "opencv2/opencv.hpp"
#include "iostream"
using namespace std;
using namespace cv;
#define WINDOW_NAME "image"
int main()
{
namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);
Mat image;
//image = imread("E:\\vs2015_opencv\\opencv_获取图像参数\\opencv_获取图像参数\\OpenCV.jpg");
image = Mat(240,320,CV_8UC3,Scalar(135,255,135));
cout << "-------------------- 打印图像参数 ----------------------"<<endl;
//通道数
cout << "channels:" << image.channels() << endl;
imshow(WINDOW_NAME,image);
waitKey(0);
return 0;
}
打印输出:
channels:3
rowRange函数原型
Mat Mat::rowRange(int startrow, int endrow) const
{
return Mat(*this, Range(startrow, endrow), Range::all());
}
colRange函数原型
Mat Mat::colRange(int startcol, int endcol) const
{
return Mat(*this, Range::all(), Range(startcol, endcol));
}
示例代码
#include "opencv2/opencv.hpp"
#include "iostream"
using namespace std;
using namespace cv;
#define WINDOW_NAME "image"
int main()
{
namedWindow(WINDOW_NAME, WINDOW_AUTOSIZE);
Mat image;
//image = imread("E:\\vs2015_opencv\\opencv_获取图像参数\\opencv_获取图像参数\\OpenCV.jpg");
image = Mat(240,320,CV_8UC3,Scalar(135,255,135));
cout << "-------------------- 打印图像参数 ----------------------"<<endl;
//获取指定2-3行元素
cout << "rowRange:" << image.rowRange(1,3) << endl;
//获取指定3-4列元素
cout << "colRange:" << image.colRange(2,4) << endl;
imshow(WINDOW_NAME,image);
waitKey(0);
return 0;
}