OpenCV系列教程(五)特征值和特征向量
一、特征值和特征向量
1 特征值与特征向量的定义
Ax=λx 设 A 是 n 阶方阵,如果数值λ和 n 维非零列向量 x 使关系式 Ax=λx 成立(即只伸缩不旋转), 那么这样的数λ称为矩阵 A 的“特征值”。
计算得到特征值和特征向量的意义?特征值与特征向量表达了一个线性变换的特征,特征向量 将一个矩阵进行正交分解,判断出在哪些方向只拉伸不扭曲来简化计算量,得到了特征值与特征向量就是得到了某个矩阵导致的伸缩比例和伸缩方向,其目的主要用于降维
上图通过分析特征值与特征向量就可以将二维数据变成一维数据分析。
2 opencv 接口计算特征值与特征向量
bool eigen(InputArray src, OutputArray eigenvalues, OutputArray eigenvectors = noArray()); 功能:获取特征值和特征向量 参数: src:原图或者数据 eigenvalues:特征值 eigenvectors:特征向量
案例:
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char const *argv[])
{
Mat data = (Mat_(2, 2) << 1, 2, 2, 1);
Mat eigen_values, eigen_vector;
eigen(data, eigen_values, eigen_vector);
for(int i = 0; i < eigen_values.rows; i++)
{
printf("eigen value %d: %.3f\n", i, eigen_values.at(i));
}
cout << "eigen vector: " << endl << eigen_vector << endl;
waitKey(0);
return 0;
}
执行结果:
猜你喜欢LIKE
相关推荐HOT
更多>>javabean是什么?
在Java中,JavaBean是一种符合特定规范的普通Java类,用于封装数据和提供操作数据的方法。JavaBean是一种重要的设计模式,用于实现面向对象编程...详情>>
2023-06-06 16:27:20java零基础入门到精通怎么学?
Java是一门广泛应用于企业级开发和大型应用程序的编程语言。要从零基础入门到精通Java,需要以下步骤和建议:1.学习基础知识:开始学习Java编程...详情>>
2023-06-05 17:02:00token是什么意思
Token是“令牌”的意思,它通常被用于身份验证和授权。在计算机系统中,当用户通过身份验证后,系统会颁发一个Token给用户,用于标识用户身份和...详情>>
2023-04-20 10:57:41虚函数的作用和实现原理
在父类中声明虚函数:在父类中通过在函数声明前加上 virtual 关键字来声明一个虚函数。需要注意的是,虚函数的使用需要谨慎,因为虚函数的调用...详情>>
2023-04-14 14:20:27