Opencv PCA Microsoft C ++ исключение: cv :: Исключение в ячейке памяти

У меня странная проблема. Я тренирую PCA с вектором данных (Mat myData) как таковой:

PCA pca(myData, Mat(), CV_PCA_DATA_AS_ROW, 90);

Количество строк в ядрах myData соответствует количеству выборок. Странно то, что, если я тренирую PCA примерно на 90 сэмплах, он запускается без проблем, но когда я увеличиваю количество сэмплов, это дает мне ошибку:

Microsoft C ++ исключение: cv :: Исключение в ячейке памяти

Когда я запускаю тот же код на Linux-машине, он также запускается без проблем.

У кого-нибудь есть идеи, что не так?

0

Решение

Наиболее вероятная причина заключается в том, что входные данные содержат не так много данных, как вы думаете. В результате OpenCV будет выполнять доступ к памяти вне пределов.

Это неопределенное поведение, и весьма вероятно, что оно будет иметь разные результаты в разных системах. Простое слишком частое использование одного элемента не будет обнаружено ОС, и ваш PCA не будет чрезмерно ошибочным из-за этого.

0

Другие решения


По вопросам рекламы [email protected]