IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> opencv根据方向向量计算直线交点 -> 正文阅读

[人工智能]opencv根据方向向量计算直线交点

  1. 计算两条直线的方向向量,以及直线上的两点
   double deltaX_X1 = endPoint.x - orgin.x;
   double deltaY_X1 = endPoint.y -orgin.y;
   double deltaX_X2 = endPoint.x - orgin.x;
   double deltaY_X2 = endPoint.y - orgin.y;
   double lineLengthX1 = sqrt(deltaX_X1*deltaX_X1+deltaY_X1*deltaY_X1);
   double lineLengthX2 = sqrt(deltaX_X2*deltaX_X2+deltaY_X2*deltaY_X2);
   X1DirectionVector.push_back(deltaX_X1/lineLengthX1);
   X1DirectionVector.push_back(deltaY_X1/lineLengthX1);
   X2DirectionVector.push_back(deltaX_X2/lineLengthX2);
   X2DirectionVector.push_back(deltaY_X2/lineLengthX2);
  1. 计算交点
//交点计算
cv::Point intersectionPointCalculate(std::vector<double> X1DirectionVec,cv::Point point1, std::vector<double> X2DirectionVec,cv::Point point2)
{
    cv::Point crossPoint(9999,9999);
    if((X1DirectionVec.at(0)!=0) && X2DirectionVec.at(0)!=0)
    {
        double ka = X1DirectionVec.at(1)/X1DirectionVec.at(0);
        double kb = X2DirectionVec.at(1)/X2DirectionVec.at(0);
        double x = ((-1)*kb*double(point2.x)+double(point2.y)+ka*double(point1.x)-double(point1.y)) / (ka - kb);
        crossPoint.x = int(x);
        crossPoint.y = ka*(x-double(point1.x))+double(point1.y);
        //std::cout<<"point1: "<<point1<<" point2: "<<point2<<" ka: "<<ka<<" kb "<<kb<<" crossPoint: "<<crossPoint<<std::endl;
    }
    if((X1DirectionVec.at(0)==0) && X2DirectionVec.at(0)==0)
    {
        //std::cout<<"tensioner coordinate calculate error!"<<std::endl;
    }
    if((X1DirectionVec.at(0)==0) && X2DirectionVec.at(0)!=0)
    {
         double kb = X2DirectionVec.at(1)/X2DirectionVec.at(0);
         crossPoint.x = point1.x;
         crossPoint.y = kb*(crossPoint.x-point2.x)+point2.y;
    }
    if((X1DirectionVec.at(0)!=0) && X2DirectionVec.at(0)==0)
    {
        double ka = X1DirectionVec.at(1)/X1DirectionVec.at(0);
        crossPoint.x = point2.x;
        crossPoint.y = ka*(crossPoint.x-point1.x)+point1.y;
    }
    return crossPoint;
}
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:32:32  更:2022-03-24 00:33:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:59:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码