Mat 对象

vs2017&opencv4.0

#include <opencv2/opencv.hpp>
#include "opencv2/highgui.hpp"
#include <opencv2\imgproc\types_c.h>

using namespace std;
using namespace cv;

int main(int argc, char** argv) {
	Mat src;
	src = imread("D:\\test.jpg");
	if (src.empty()) {
		cout << "could not load image..." << endl;
		return -1;
	}
	namedWindow("input1", WINDOW_AUTOSIZE);
	imshow("input1", src);

	Mat dst;
	dst = Mat(src.size(), src.type());//与src大小类型相同
	dst = Scalar(127, 0, 255);//标量,定义颜色
	namedWindow("output2", WINDOW_AUTOSIZE);
	imshow("output2", dst);

	Mat drt;
	src.copyTo(drt);//复制src给dst
	namedWindow("output3", WINDOW_AUTOSIZE);
	imshow("output3", drt); 

	Mat det;
	cvtColor(src, det, CV_BGR2GRAY);//改变颜色
	printf("input image channels : %d\n", src.channels());
	printf("output image channels : %d\n", det.channels());

	int cols = det.cols;//获得dst的行
	int rows = det.rows;//获得dst的列

	printf("rows : %d cols : %d\n", rows, cols);//输出行数和列数
	const uchar* firstRow = det.ptr<uchar>(0);//获得dst的第一个像素
	printf("fist pixel value : %d\n", *firstRow);//输处第一个像素

	Mat M(100, 100, CV_8UC1, Scalar(127));//定义大小为100 的矩阵,一维数组,像素为127
	cout << "M =" << endl << M << endl;

	Mat m1;
	m1.create(src.size(), src.type());//与src的大小类型相同
	m1 = Scalar(0, 0, 255);//三维的数组

	Mat csrc;
	Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);//掩膜
	filter2D(src, csrc, -1, kernel);
	namedWindow("output4", WINDOW_AUTOSIZE);
	imshow("output4", csrc);

	Mat m2 = Mat::eye(2, 2, CV_8UC1);//创建大小为2*2的一维矩阵
	cout << "m2 =" << endl << m2 << endl;//输出矩阵
	namedWindow("output5", WINDOW_AUTOSIZE);
	imshow("output5", m2);
	waitKey(0);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/YangYaYan/article/details/89109091
Mat
今日推荐