注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

*^^* 寂寞的whitebaby

欢迎来到我的家,充满回忆的地方

 
 
 

日志

 
 
关于我

いǒDê個性伱惹吥起                 ヤ 無限囂張.習慣寂寞‰〆┈

在Opencv里面画箭头  

2011-03-04 16:57:08|  分类: openCV |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在optical flow一节的例题里,看到有人利用箭头来表现flow vector,很疑惑,因为opencv本身并没有画箭头的函数,那么如何来实现呢?其实可以通过画三条线段来构成一个箭头:
/*获得箭头的起点、终点坐标,两点间线段的角度和长度*/
        CvPoint p,q;//新建lianggedian p,q
        p.x = (int) frame1_features[i].x; //第N副image中的点x坐标
        p.y = (int) frame1_features[i].y;//第N副Image中的点y坐标
        q.x = (int) frame2_features[i].x;//第N+1副image中的点x坐标
        q.y = (int) frame2_features[i].y;;//第N+1副image中的点y坐标
        double angle; angle = atan2( (double) p.y - q.y, (double) p.x - q.x );//线段pq的坡角大小
        double hypotenuse; hypotenuse = sqrt( square(p.y - q.y) + square(p.x - q.x) );//线段pq的长度
/*为了清楚直观,将箭头长度变成原长度的3倍,即减小终点坐标 */
        q.x = (int) (p.x - 3 * hypotenuse * cos(angle));
        q.y = (int) (p.y - 3 * hypotenuse * sin(angle));
/*绘制箭头主线. */
       cvLine( frame1, p, q, line_color, line_thickness, CV_AA, 0 );/* p为线段起点,q 为终点,CV_AA 为平滑直线*/
/* 绘制箭头上下两条短线*/
        p.x = (int) (q.x + 9 * cos(angle + pi / 4));//箭头上短线1,角度为pq角度上增pi/4,长度为9
        p.y = (int) (q.y + 9 * sin(angle + pi / 4));//获得短线1起点x,y
        cvLine( frame1, p, q, line_color, line_thickness, CV_AA, 0 );//以q为终点绘制第一条箭头短线
        p.x = (int) (q.x + 9 * cos(angle - pi / 4));//箭头下短线2,角度为pq角度减少pi/4,长度为9
        p.y = (int) (q.y + 9 * sin(angle - pi / 4));//获得短线2起点x,y
        cvLine( frame1, p, q, line_color, line_thickness, CV_AA, 0 );//画下第二条箭头短线
}

  评论这张
 
阅读(1090)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018