当指定线条粗细大于1时,cv2.line()绘制的结果线宽比指定的要宽。分别指定1、2、3、4、5、6的粗细会得到线宽为1、3、5、5、7、7。我尝试使用不同的lineType值(4、8、16)和带有shift参数的亚像素点位置,但对线宽没有影响。我做错了什么吗?
例如:
例如:
import numpy as np
import cv2
a = np.zeros((10,10), dtype=np.uint8)
cv2.line(a, (0,4), (9,4), 1, 2)
print(a)
生成:
[[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[1 1 1 1 1 1 1 1 1 1]
[1 1 1 1 1 1 1 1 1 1]
[1 1 1 1 1 1 1 1 1 1]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]]
PIL
或Pillow
来满足你的需求。然后再做一些工作,你可能能够让aggdraw
做你想要的事情。它实际上是为这种工作而创建的,但不幸的是,它没有以易于安装的形式进行积极维护。请参见:https://bitbucket.org/2degrees/aggdraw-64bits/src - DrV