opencv 中的flip,transpose/t inv函数

opencv中的基本矩阵操作:

https://blog.csdn.net/iracer/article/details/51296631

1 flip 函数  实现图像的反翻转

	void cv::flip(
		cv::InputArray src, // 输入图像
		cv::OutputArray dst, // 输出
		int flipCode = 0 // >0: 沿y-轴翻转, 0: 沿x-轴翻转, <0: x、y轴同时翻转
	);

2  transpose/t  函数  实现矩阵的转置

cv::Mat m1 = imread("idol.jpg");
cv::Mat m3;
transpose(m1, m3);

cv::Mat m2;
m2=m1.t();

3 inv 实现矩阵求逆

	cv::Mat me = cv::Mat::ones(5, 5,CV_32FC1);
	Mat meinv = me.inv();

4 矩阵的初始化

cv::Mat mz = cv::Mat::zeros(cv::Size(5,5),CV_8UC1); // 全零矩阵
cv::Mat mo = cv::Mat::ones(cv::Size(5,5),CV_8UC1);  // 全1矩阵
cv::Mat me = cv::Mat::eye(cv::Size(5,5),CV_32FC1);  // 对角线为1的对角矩阵

 

5 矩阵运算

 加减法:

加减法:
cv::Mat a= Mat::eye(Size(3,2), CV_32F);
cv::Mat b= Mat::ones(Size(3,2), CV_32F);
cv::Mat c= a+b;
cv::Mat d= a-b;

 

 

数乘,矩阵乘法:


	Mat m1= Mat::eye(2,3, CV_32F); //使用cv命名空间可省略cv::前缀,下同
	Mat m2= Mat::ones(3,2, CV_32F);
	cout<<"m1  = "<<endl<<m1<<endl<<endl;
	cout<<"m2  = "<<endl<<m2<<endl<<endl;
	// Scalar by matrix
	cout << "\nm1.*2 = \n" << m1*2 << endl;
	// matrix per element multiplication
	cout << "\n(m1+2).*(m1+3) = \n" << (m1+1).mul(m1+3) << endl;
	// Matrix multiplication
	cout << "\nm1*m2 = \n" << m1*m2 << endl;
 

 

猜你喜欢

转载自blog.csdn.net/SenPaul/article/details/82822357
今日推荐