c++ - 为什么这个程序崩溃了

标签 c++ opencv vector

我写了一个小程序,其中,我想根据 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/

相关文章:

c# - 谷歌 C++ 代码示例解释,翻译成 C#

c++ - C数组文字中的显式索引?

java - 如何将对象添加到 vector 中?

c++ - Qt 中的 Objective-C with Mavericks

c++ - 将 C++ 文件合并到单个源文件中

c# - 使用OpenCV解决非平面物体点和图像点之间的变换

c - 如何将元素 (cv::Point) 添加到共享数组中 - CUDA

xcode - 未找到 OpenCV 库

c++ - vector 初始化导致大量内存使用

c++ - 为什么 vector 运算符+之后的虚拟值?