我正在使用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;
}
}
}
答案 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
}