1、输入一堆直线,返回每条直线的斜率和截距
斜率和截距都是浮点型。
//输入一堆直线,返回每条直线的斜率和截距 //Vec2f为2个点的float,参照存储直线的数据结构 vector <Point2f>
get_lines_fangcheng(vector<Vec4i> lines) { float k = 0; //直线斜率 float b = 0;
//直线截距 vector <Point2f> lines_fangcheng;//直线斜率的反正切值 for (unsigned int i = 0;
i<lines.size(); i++) { k = (double)(lines[i][3] - lines[i][1]) / (double
)(lines[i][2] - lines[i][0]); //求出直线的斜率// -3.1415926/2-----+3.1415926/2 b = (
double)lines[i][1] - k * (double)lines[i][0]; //求出直线的斜率
lines_fangcheng.push_back(Point2f(k,b)); }return lines_fangcheng; }
2、输入一堆直线,返回每条直线与水平直线的弧度值
//输入一堆直线,返回每条直线与水平直线的角度,为弧度 vector <float> get_lines_arctan(vector<Vec4i>
lines) {float k=0; //直线斜率 vector <float> lines_arctan;//直线斜率的反正切值 for (unsigned
int i = 0; i<lines.size(); i++) { k = (double)(lines[i][3] - lines[i][1]) / (
double)(lines[i][2] - lines[i][0]); //求出直线的斜率 lines_arctan.push_back(atan(k)); }
return lines_arctan; }
当然角度稍微转化即可,如下:
//显示每条直线的角度 vector <float> lines_arctan;//直线斜率的反正切值 lines_arctan =
get_lines_arctan(lines);for (unsigned int i = 0; i < lines.size(); i++) { cout
<<"检测到的直线弧度" << lines_arctan[i] << endl; cout << "检测到的直线角度为:" <<
lines_arctan[i] *180.0/3.1415926<< endl; }
热门工具 换一换