Opencv решает броски cv :: Исключение

На Windows 10, работает Visual Studio 2015. Opencv 3.0

Используя Opencv, сначала сопоставьте два изображения и определите перевод между ними, используя matchTemplate. Я хочу получить субпиксельную оценку, поэтому я собираюсь ввести окно значений 11X11 из корреляционного вывода и подогнать квадратичную поверхность к этим точкам.

void Sector1::ResampSector(cv::Mat In, cv::Mat R, cv::Mat Out, cv::Point Loc)
{
// first get fractional offset
int lsq = 5;
// Ax^2 + B xy + Cy^2 + Dx +Ey + F = R
cv::setBreakOnError(true);
cv::Mat A( 121, 6, CV_32F);
cv::Mat B( 121, 1, CV_32F);
cv::Mat C (6, 1, CV_32F);
int L = 0;
for (int i = Loc.y-lsq; i <= Loc.y+lsq; i++) {
for (int j = Loc.x-lsq; j <= Loc.x+lsq; j++) {
A.at<float>(L, 0) = float(i*i);
A.at<float>(L, 1) = (float)i*j;
A.at<float>(L, 2) = (float)j*j;
A.at<float>(L, 3) = (float)i;
A.at<float>(L, 4) = (float)j;
A.at<float>(L, 5) = 1.f;
B.at<float>(L)    = R.at<float>(i, j); // since is 3 band stuff ?
L++;
}  // for j
}  // for i
bool rc = cv::solve(A, B, C);

вызов cv :: solve возвращает false, и есть два cv :: Exceptions по одному и тому же адресу, который находится вне какой-либо матрицы изображения или других переменных. Я посмотрел на содержимое A, B и C, используя окно памяти, и все они выглядят правильно. Структуры A, B, C кажутся правильными. Я пытался сделать шаг в решении, но у меня нет библиотеки с символическими таблицами.

Любая подсказка, где я ошибся? предложения по дальнейшему отслеживанию проблемы?

0

Решение

Лапак жалуется, что метод по умолчанию не будет работать. исправление состоит в том, чтобы добавить флаг = DECOMP_QR в качестве 4-го, необязательного аргумента к вызову решения ()

0

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

Других решений пока нет …

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