作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/01 07:03:02
给定一个点坐标,和一个角度(即斜率),如何在一幅图上画出这条直线?用opencv或C实现
如果用函数cvline的话需要知道两个点坐标,但是现在我们要做的是根据这个角度和这个点来确定那另外一个点的坐标,所以提前要想知道另一个点并用cvline画直线是不现实的,还有别的方法吗?
根据点和角度,能画出一条射线,除非知道这条射线的长度
再问: 嗯对的,画个射线也行啊...它长度...也是需要另外这种几个点几条线相交确定唉
再答: 那就需要先计算交点,然后再绘制
再问: 那个交点...是图像上待检测的。。。待求的。。哭啊....
再答: 根据中学里学的线条的点斜方程,并列两个线条的方程,就可求得交点 另外,如果绘制时可以绘制到交点以后,那就直接绘制到边界(计算和边界的交点)
再问: 嗯我想要通过这种画直线找交点的方法变成一种通用的找交点的方法,可以在不同的边缘检测图像上都能完好地找出我想要的交点来,所以解方程求交点感觉不大好用。 嗯绘制时也绘制不到边界点后的...呵呵,应该是在图像的中心区域。
再答: 那你是想要一种步进绘制直线的算法?即每次在横坐标或纵坐标上绘制一个点,直到到达边界?
再问: 嗯对,是想要一种算法,比如说我知道了这个点的坐标,和这个点处应该有的那条直线的斜率(或者角度),那么我将这条直线所在的所有像素点的亮度变亮或者颜色改变等等的这种类似算法,能把这条直线显示出来。然后同时显示这么多条直线后,它们相交的那一点的就能显示了,就很亮很亮了,我》。。就找到这个想要的点了。
再答: 给你一个大致的参考算法,我这里是假定向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等情况