矩阵初始化的一些操作
记录一点矩阵初始化的操作
纯色矩阵
了解下空间申请
构造函数
dst = Mat(src.size(), src.type());
dst = Scalar(250, 250,100);
creat()
dst6.create(src.size(), src.type());
dst6 = Scalar(250, 250, 100);
图像复制
copyTo()
Mat dst1 = src.clone();
mat.clone()
Mat dst2;
src.copyTo(dst2);
格式转换
Mat dst3;
cvtColor(src, dst3, COLOR_BGR2GRAY);
常规申请
Mat dst4(30, 30, CV_8UC3, Scalar(250, 250, 100));
Mat dst5(30, 30, CV_8UC1, Scalar(127));
Mat dst11(src.rows, src.cols, CV_8UC3, src.data);
滤波核类型的矩阵构造
(<LearnOpenCV(2)>中滤波的函数实现)
Mat filtered;
Mat dst7 = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(src, filtered, -1, dst7);
zeros/ones
Mat dst9 = Mat::zeros(20, 20, CV_16FC1);
Mat dst10 = Mat::ones(20, 20, CV_16FC1);
代码
//常规矩阵初始化操作
# include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("girl4.jpg", IMREAD_COLOR);
if (src.empty()) return -1;
//
Mat dst;
dst = Mat(src.size(), src.type());
dst = Scalar(250, 250,100);
Mat dst6;
dst6.create(src.size(), src.type());
dst6 = Scalar(250, 250, 100);
// 图像复制
Mat dst1 = src.clone();
Mat dst2;
src.copyTo(dst2);
//图像格式转换
Mat dst3;
cvtColor(src, dst3, COLOR_BGR2GRAY);
//图像内存申请(指明尺寸和数据类型)
Mat dst4(30, 30, CV_8UC3, Scalar(250, 250, 100));
Mat dst5(30, 30, CV_8UC1, Scalar(127));
Mat dst11(src.rows, src.cols, CV_8UC3, src.data);
//滤波核类型的构造
Mat filtered;
Mat dst7 = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(src, filtered, -1, dst7);
//zeros/ones
Mat dst9 = Mat::zeros(3, 3, CV_16FC1);
Mat dst10 = Mat::ones(3, 3, CV_16FC1);
cout << dst9 << endl;
cout << "//" << endl;
cout << dst10 << endl;
imshow("Matin", src);
imshow("Mat", d1st);
imshow("dst1", dst1);
imshow("dst2", dst2);
imshow("dst3", dst3);
imshow("dst4", dst4);
imshow("dst5", dst5);
imshow("dst11", dst11);
imshow("dst6", dst6);
waitKey(0);
return 0;
}