给定一个点坐标,和一个角度(即斜率),如何在一幅图上画出这条直线?用opencv或C实现

给定一个点坐标,和一个角度(即斜率),如何在一幅图上画出这条直线?用opencv或C实现
如果用函数cvline的话需要知道两个点坐标,但是现在我们要做的是根据这个角度和这个点来确定那另外一个点的坐标,所以提前要想知道另一个点并用cvline画直线是不现实的,还有别的方法吗?
uiazn 1年前 已收到1个回答 举报

lgmql14 春芽

共回答了14个问题采纳率:92.9% 举报

根据点和角度,能画出一条射线,除非知道这条射线的长度

1年前 追问

8

uiazn 举报

嗯对的,画个射线也行啊...它长度...也是需要另外这种几个点几条线相交确定唉

举报 lgmql14

那就需要先计算交点,然后再绘制

uiazn 举报

那个交点...是图像上待检测的。。。待求的。。哭啊....

举报 lgmql14

根据中学里学的线条的点斜方程,并列两个线条的方程,就可求得交点 另外,如果绘制时可以绘制到交点以后,那就直接绘制到边界(计算和边界的交点)

uiazn 举报

嗯我想要通过这种画直线找交点的方法变成一种通用的找交点的方法,可以在不同的边缘检测图像上都能完好地找出我想要的交点来,所以解方程求交点感觉不大好用。 嗯绘制时也绘制不到边界点后的...呵呵,应该是在图像的中心区域。

举报 lgmql14

那你是想要一种步进绘制直线的算法?即每次在横坐标或纵坐标上绘制一个点,直到到达边界?

uiazn 举报

嗯对,是想要一种算法,比如说我知道了这个点的坐标,和这个点处应该有的那条直线的斜率(或者角度),那么我将这条直线所在的所有像素点的亮度变亮或者颜色改变等等的这种类似算法,能把这条直线显示出来。然后同时显示这么多条直线后,它们相交的那一点的就能显示了,就很亮很亮了,我》。。就找到这个想要的点了。

举报 lgmql14

给你一个大致的参考算法,我这里是假定向x和y增加的方向移动,你需要对它扩展 int x = x1, y = y1; // 起步 if (k > 1) { y = y + 1; } else { x = x + 1; } while (绘制的停止条件) { if ( (y-y1) > k*(x-x1)) { x = x + 1; } else { y = y + 1; } } 所谓扩展,就是要考虑 x -1, y-1等情况
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.031 s. - webmaster@yulucn.com