实际上是一个数学系列。只需查看直线的起点和终点以及它们如何增加和减少,就可以找到解决方案。
s = 1000
img = np.full((s,s,3), 255, dtype='uint8')
inc = 10
color = [0,0,255]
for i,j in zip(range(0,s+1,inc), range(0,s+1,inc)):
cv2.line(img, (i,1), (s,i), color, 2)
cv2.line(img, (1,j), (j,s), color, 2)
cv2.imshow('img', img)
cv2.waitKey(0)
这将为您绘制一组线条:
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
@dataclass
class Line:
p1: Point
p2: Point
def lower_left_mesh(height, width, n):
return [
Line(
Point(0, i * (height - 1) // n),
Point((i + 1) * (width - 1) // n, height - 1)
)
for i in range(n)
]
因此,例如:
>>> lower_left_mesh(101, 101, 10)
[Line(p1=Point(x=0, y=0), p2=Point(x=10, y=100)),
Line(p1=Point(x=0, y=10), p2=Point(x=20, y=100)),
Line(p1=Point(x=0, y=20), p2=Point(x=30, y=100)),
Line(p1=Point(x=0, y=30), p2=Point(x=40, y=100)),
Line(p1=Point(x=0, y=40), p2=Point(x=50, y=100)),
Line(p1=Point(x=0, y=50), p2=Point(x=60, y=100)),
Line(p1=Point(x=0, y=60), p2=Point(x=70, y=100)),
Line(p1=Point(x=0, y=70), p2=Point(x=80, y=100)),
Line(p1=Point(x=0, y=80), p2=Point(x=90, y=100)),
Line(p1=Point(x=0, y=90), p2=Point(x=100, y=100))]