《OpenCV获取图像属性(行高、列宽、通道数等)》

《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类常用函数


《OpenCV获取图像属性(行高、列宽、通道数等)》

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;
}