Я написал код для создания собственных лиц. В качестве входных данных я взял 3 изображения разных людей. Я вычислил собственные векторы и собственные значения. Поскольку делается всего 3 изображения, я выбираю все три собственных вектора, каждый размером 36000x1, в качестве главных компонент. Когда я изменяю собственные векторы, чтобы увидеть изображение, я получаю собственное лицо только для одного человека. Остальные изображения почти полностью пусты.
Я извлекаю каждый собственный вектор из covevec (матрица собственных векторов ковариационной матрицы)
col1=covevec.col(0);
col2=covevec.col(1);
col3=covevec.col(2);
Я переделываю их следующим образом:
if (!col1.isContinuous() && !col2.isContinuous() && !col3.isContinuous())
{
col1=col1.clone();
col2=col2.clone();
col3=col3.clone();
}
Mat final1,final2,final3;
final1=col1.reshape(0,200);
final2=col2.reshape(0,200);
final3=col3.reshape(0,200);
Вот как выглядит final2:
А два других выглядят так:
Что я делаю неправильно?