Я разрабатываю некоторый алгоритм на Mac, используя Xcode 5 и OpenCV. Я делаю это как C ++.
Я определяю матрицу:
Mat src;
int cols = 560;
int rows = 260;
src.create( cols, rows, DataType<double>::type);
В коде у меня цикл выглядит так:
for (int i=0; i<src.rows; i++) {
const double* srcIterator = src.ptr<double>(i);
for (int j=0; j<src.cols; j++) {
double temp = srcIterator[j];
temp++;
}
}
Я прочитал функцию, которая имеет этот цикл для каждого кадра, который я прочитал. В большинстве случаев он работает правильно (работает в бесконечном цикле и всегда в порядке).
В некоторых прогонах я получаю ошибку exc_bad_access. Когда это случилось, это случилось для первого кадра.
Ошибка в строке: double temp = srcIterator [j];
Когда это произошло, j значительно ниже 560 и всегда выше 500, но каждый раз имеет значение защиты.
Я думал, может быть, я смешиваю столбцы и строки, но если бы это было правильно, я получил бы эту ошибку, когда j было 260 (размер строк).
Пожалуйста, кто-нибудь догадывается, что это может быть?
От доктор, вы, кажется, инвертировали параметры строк и столбцов в вызове cv::Mat::create()
,
Это также объясняет, что вы получаете недопустимый доступ, когда пытаетесь читать с большими значениями для i и j.
Других решений пока нет …