C++ Opencv行方法有一个奇怪的行为
我正在使用OpenCv Mat访问和复制(C++)。考虑以下例子:C++ Opencv行方法有一个奇怪的行为,c++,opencv,mat,C++,Opencv,Mat,我正在使用OpenCv Mat访问和复制(C++)。考虑以下例子: cv::Mat values=cv::Mat::zero(100,1,cv_32FC1); 对于(int i=0;i
cv::Mat values=cv::Mat::zero(100,1,cv_32FC1);
对于(int i=0;i<100;i++){
(i,1)处的值=10+i;
}
看,你称它为行=100
cols=1
。当您使用i=0调用values.at(i,1)
时,您正在访问第0行和第1列的元素,这当然超出了Mat的范围
更改值。at(i,1)
为值。at(i,0)
并在调试模式下运行您的构建,以供将来参考,OpenCV断言将捕获类似于此的错误。值。at(i,1)
已超出1列Mat的范围。这里只有(i,0)有效。请运行一个调试构建,这样您就可以在这里得到正确的异常抛出(是“一次性的”,您没有初始化第一个元素),感谢我完全错过了访问Mat的界限!