Why in following code pointer to EVectors
and EValues
whether in main function or in MYLDA
function become null? and how to fix it?
void main()
{
// some code
Mat EVectors;
Mat EValues;
uchar* pEVectors = EVectors.data;
uchar* pEValues = EValues.data;
MYLDA(train_labels, train_data, pEVectors, pEValues);
// some code
}
void MYLDA(vector<int> gnd, Mat_<float> _data, uchar* eigvector, uchar* eigvalue)
{
// some code
GeneralizedEigenSolver<MatrixXf> ges;
ges.compute(DPrime, WPrime);
MatrixXcf eigenvectorsInEigen = ges.eigenvectors();
VectorXcf eigenvaluesInEigen = ges.eigenvalues();
Mat eigenvectorsOpenCV(eigenvectorsInEigen.rows(),
eigenvectorsInEigen.cols(), CV_32FC1, eigenvectorsInEigen.data());
eigvector = eigenvectorsOpenCV;
Mat eigenvaluesOpenCV(eigenvaluesInEigen.rows(),
eigenvaluesInEigen.cols(), CV_32FC1, eigenvaluesInEigen.data());
eigvalue = eigenvaluesOpenCV;
}