代码如下:
#include<opencv2/opencv.hpp>
#include<opencv2/imgcodecs.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
#include <string>
#include <cmath>
//#include "check.h"
using namespace cv;
using namespace std;
//角度值转换为弧度制
double Angular_radians(double angle) {
double M_PI = 3.1415926;
double radians = angle * M_PI / 180.0;
return radians;
}
int main() {
//1.输入角度值
double angle = -3.0;
double angles = Angular_radians(angle);//角度转为弧度的函数
double results = sin(angles);//求正弦值
double resultc = cos(angles);//求余弦值
//cout<< results<<" " << resultc << endl;
//2.初始化矩阵(获得旋转矩阵),并求逆矩阵
Mat K = (Mat_<double>(3, 3)<< resultc,0,(-1)* results,0,1,0, results,0, resultc);
//Mat K1 = (Mat_<double>(3, 3) << 1, 0, 0, 0, resultc, (-1) * results,0, results, resultc);
//Mat K = (Mat_<double>(3, 3) << 0, 0, 1, 0, 1, 0, 1, 1, 1);
Mat meinv = K.inv();//求逆矩阵
//cout<< "逆矩阵:" << endl << K << endl;
//cout << K << endl;
//3.输入一组三维的坐标(x,y,z)
Mat X = (Mat_<double>(3, 1) << 500,0.0,1000);
//cout << X << endl;
//4.旋转矩阵与三维坐标相乘
Mat KX = K *X;
cout << KX << endl;
//mians();
return 0;
}
void ImageThreshold(String str) {
Mat image = imread(str);
Mat binary;
//cvtColor(image, binary, COLOR_BGR2GRAY);
imshow("test_opencv_srtup", image);
waitKey(0);
}