-3
なぜ次のコードでは、EVectors
とEValues
へのポインタは、main関数でもMYLDA
関数でもnullになるのでしょうか?それを修正する方法は?この問題を解決するためのなぜuchar *マットへのポインタがnullになるのですか?
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;
}
あなたがそれらを割り当てたとき、彼らはヌルでしたか?彼らはどこでヌルになったのですか?どちらもデバッガで答えることができます。 – chris
パラメータへの割り当ては、その機能を実行している外では効果がありません。 – molbdnilo
@molbdnilo何を意味するのですか?もっと詳しく説明できますか? – Saeid