生成四条线围成一个矩形,并对其进行平移旋转,对四条边进行延长、缩短和旋转。

生成四条线围成一个矩形,并对其进行平移旋转,对四条边进行延长、缩短和旋转。

def buildRealRect(W, H):
	#先搞四个点
	p0 = np.array([150, 100])
	p2 = np.array([H-50, H-100])
	p1 = np.array([p0[1], p2[0]])
	p3 = np.array([p2[1], p0[1]])
	center = (p0+p2) / 2
	p = np.array([p0, p1, p2, p3])#四个点放到一个4x2的矩阵里方便操作
	angle = np.random.random()*np.pi #0-pi/2
	#旋转矩阵
	R = np.array([[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]])
	center = np.vstack([center]*4)
	p = (p-center).dot(R)+center#旋转后新的点坐标
	lines = np.vstack([p0, p1, p1, p2, p2, p3, p3, p4, p4, p1]).reshape(-1, 4)#点组成的四条线
	r1 = np.random.randn(4, 4)*20
	lines += r1
	lines = lines.astype(np.int32)
	canvas = np.zeros((H, W, 3), dtype=np.uint8) 
	for i, line in enumerate(lines):
		x1,y1,x2,y2 = line
		cv2.line(canvas, (x1, y1), (x2, y2), (255,255,255), 3)
		cv2.imshow('GT', canvas)

直接用矩阵操作比用循环更快,代码也更短。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值