我写了一个小程序,其中,我想根据 vector 将帧的值设置为 255:
result = cv::Mat::zeros(frame.size(),CV_8UC1);
std::vector<cv::Point2f> imageCorners;
.......................................................
for ( int i = 0 ; imageCorners.size();i++){
std::cout << imageCorners[i]<< std::endl;
result.at<uchar>(imageCorners[i]) = 255;
cv::imshow("result",result);
}
我的问题是:为什么程序刚结束循环就崩溃了??即使我看到结果是正确的?我收到的错误消息是:
vector subscript out of range
最佳答案
for ( int i = 0 ; imageCorners.size();i++){
// ^^^^^^^^^^^^^^^^^^^
下划线部分是条件。在这种情况下,您说的是“继续循环,直到 imageCorners
的大小为“false”(即 0
)”。但是你永远不会改变 vector 的大小,所以这个条件永远不会停止循环,i
不断变大,直到你尝试访问一个实际上不在 imageCorners
中的索引>.
大概你的意思是循环直到 i
变得比 vector 大。然后使用
for (int i=0; i < imageCorners.size(); ++i) {
关于c++ - 为什么这个程序崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18055027/