openCV画箭头函数arrowedLine画出来的很丑,自己写了一个画箭头函数,结果如下

1、OpenCV 画箭头的函数
if __name__ == "__main__":
path = r"D:\cycFeng\Data\tree3.jpg"
img = cv2.imread(path)
StartX = 640
StartY = 528
EndX = 368
EndY = 426
cv2.arrowedLine(img, (StartX, StartX), (EndX, EndY), (255, 0, 0), 2, 9, 0, 0.3) # 画箭头
cv2.imshow('q', img)
cv2.waitKey()
cv2.arrowedLine(img, (StartX, StartX), (EndX, EndY), (255, 0, 0), 2, 9, 0, 0.3) # 画箭头
画出来效果如下,比较丑

2、自己写一个画箭头函数,
给定起始点和终点,以及颜色,先找到箭头的7个点,之后用透明掩膜在原图上画出透明箭头
"""
@Author : XiaoZhou
@Time : 2021/11/22 16:38
@FileName : ArrowDraw.py
@Function :
"""
import numpy as np
import cv2
def GetArrowPoints(StartX, StartY, EndX, EndY, Width, NoseWidth, ArrowSizeL):
"""
这里返回一个箭头的五个点,X坐标水平向右, Y坐标垂直向下
:param StartX: 开始点的X坐标
:param StartY: 开始点Y的坐标
:param EndX: 结束点X的坐标
:param EndY: 结束点Y的坐标
:param Width: 箭头尾部的宽度,这里宽度是一半
:param NoseWidth: 箭头鼻翼的宽度,也是一半
:param ArrowSizeL: 这里是箭头的长度
:return:
"""
xx = EndX - StartX # 水平向右是X 竖直向下是Y
yy

本文介绍了如何使用OpenCV的arrowedLine函数绘制箭头以及其效果,由于默认效果不理想,作者自定义了一个画箭头的函数,通过指定起始点、终点和颜色,计算出箭头的7个关键点,并利用透明掩膜在原图上绘制出更美观的箭头。
最低0.47元/天 解锁文章
411

被折叠的 条评论
为什么被折叠?



