For循环结束并终止正在运行的程序,但在删除斜率计算语句时正确运行

时间:2015-03-07 11:39:06

标签: c++ eclipse opencv

我正在使用opencv的概率Hough Line函数扫描图像的候选ROI,然后计算每个检测到的线的斜率。内部For循环结束自身并终止正在运行的程序,如果没有。检测到的每个ROI的行大于5,但在删除斜率计算语句时正确运行。我正在使用eclipse Luna 4.4.0。 Mat ini []用于存储每个候选ROI

for (int m = 0; m < cnt; m++)
{
    if (selected[m] == true)
    {
        vector<Vec4i> lines;
        vector<Vec4i> v_lines;
        vector<Vec4i> h_lines;
        int vl_cnt = 0;
        int hl_cnt = 0;

        // lines are detected in rectangle number m
        HoughLinesP(ini[m], lines, 1, CV_PI / 180, 40,
                             (ini[m].cols) / 3, (ini[m].cols) / 5); 

        float slope = 0;
        for (size_t i = 0; i < lines.size(); i++ )
        {
            cout << "0";
            Vec4i p = lines[i];
            cout << "1";
            slope = ((p[3] - p[1]) / (p[2] - p[0])); // removing this statement fixes the unexpected termination
            cout << slope;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

p[2] - p[0] == 0时,您似乎得到除以零错误。只需使用以下内容即可防范:

float run = p[2] - p[0];
if (run != 0) {
    slope = ((p[3] - p[1]) / run);
} else {
    // handle no run 
}