pyhton的PIL库是深度学习读取图像数组常用的库。
但是PIL库没有画箭头的功能,我要做的程序需要在图像上标注。
有两个选择:
1.使用其他库,如matplotlib、opencv。
2.自己使用画直线的功能画出箭头。
由于前置的程序都是使用PIL实现的,不想再转用其他库,同时,也想挑战一下,自己组织算法实现。
我选择自己解决。
假设:箭头坐标(5, 5),箭尾坐标(100,3)。
(经历了一些尝试。。。。省略)
要实现的要点也有两个:
1.使用sympy等库求方程组;
2.建立两个方程关系。
求方程组自不用说,固定的模板。
假设这个点坐标为(a,b).
建立方程组:1.(a,b)和原直线有一定夹角,这个是自己指定的,怎么好看怎么来。为了好计算设为60度,余弦值为0.5。
IMG_4232.jpg
-
这(两)个点到直线的距离相等,可以随便设,之后根据好看程度再调。这里设为3。
IMG_7754.JPG
剩下的计算步骤如下:
screenshot_15.png
这样就得到箭头的两外两个点,通过从箭头坐标(5, 5)出发画三条直线,就可以画出一个有箭头的直线了。
然后写成一个函数就可以供以后调用了。
网友评论