Я работаю с доступом к OpenCv Mat и копирую в (C++). Учитывая следующий пример:Метод строки Opencv имеет странное поведение
cv::Mat values = cv::Mat::zeros(100, 1, CV_32FC1);
for (int i = 0; i < 100; i++) {
values.at<float>(i, 1) = 10 + i;
}
cout<<values.at<float>(0, 1)<<endl; // prints 10
cout<<values.at<float>(1, 1)<<endl; // prints 11
cout<<values.row(0) <<endl; // prints 0
cout<<values.row(1)<<endl; // prints 10
cout<<values.row(2)<<endl; // prints 11
Проблема заключается в том, что row(0)
всегда возвращает 0 и доступ к Mat с row(1)...row(n)
имеет смещение +1 по отношению к методу at<>()
который выглядит странно для меня. Я что-то пропустил или является известной проблемой OpenCv?
'values.at (i, 1)' уже выходит за пределы для 1-столбцового мата. здесь справедливо только (i, 0). пожалуйста, запустите отладочную сборку, поэтому вы получите правильные исключения, которые вы выбрали здесь (будучи «одноразовым», - вы не инициализировали 1-й элемент) –
berak