У меня странная проблема. Я тренирую PCA с вектором данных (Mat myData) как таковой:
PCA pca(myData, Mat(), CV_PCA_DATA_AS_ROW, 90);
Количество строк в ядрах myData соответствует количеству выборок. Странно то, что, если я тренирую PCA примерно на 90 сэмплах, он запускается без проблем, но когда я увеличиваю количество сэмплов, это дает мне ошибку:
Microsoft C ++ исключение: cv :: Исключение в ячейке памяти
Когда я запускаю тот же код на Linux-машине, он также запускается без проблем.
У кого-нибудь есть идеи, что не так?
Наиболее вероятная причина заключается в том, что входные данные содержат не так много данных, как вы думаете. В результате OpenCV будет выполнять доступ к памяти вне пределов.
Это неопределенное поведение, и весьма вероятно, что оно будет иметь разные результаты в разных системах. Простое слишком частое использование одного элемента не будет обнаружено ОС, и ваш PCA не будет чрезмерно ошибочным из-за этого.