C ++中的线交点

问题描述

我有这个问题:我在图像中有一些线条,我必须找到它们的交点。我做了一个双循环。一个找到线条,另一个找到它们的交点,它起作用了。但问题是循环找到了双交叉点,因为它取了一条线并与其他线进行了比较,然后取了第二条线并与所有其他线进行了比较,因此它找到了由第一条线创建的相同交叉点。 代码如下:

for (int j = 0; j < lines.size() && (j < getQuantity()); j++){
   
    pt1.x = cvRound(x0 + 1000 * (-b));
    pt1.y = cvRound(y0 + 1000 * (a));
    pt2.x = cvRound(x0 - 1000 * (-b));
    pt2.y = cvRound(y0 - 1000 * (a));
    
  for (size_t i = 0; i < (lines.size()) && (i < getQuantity()); i++)
  {
    Point pt3,pt4;
    pt3.x = cvRound(x00 + 1000 * (-b1));
    pt3.y = cvRound(y00 + 1000 * (a1));
    pt4.x = cvRound(x00 - 1000 * (-b1));
    pt4.y = cvRound(y00 - 1000 * (a1));

    if (pt2.x - pt1.x != 0) { 
    double m1 = (pt2.y - pt1.y) / (pt2.x - pt1.x);
    double m2 = (pt4.y - pt3.y) / (pt4.x - pt3.x);
    double q1 = pt1.y - m1 * pt1.x;
    double q2 = pt3.y - m2 * pt3.x;
    intersection=Point((q2 - q1) / (m1 - m2),m1 * (q2 - q1) / (m1 - m2) + q1);
        
        circle(src2,intersection,5,Scalar(0,255,0));
    }}
line(src2,pt1,pt2,255),1,LINE_AA);

感谢您的建议

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...