: Why not. Support you have an angle, then you can make two orthogonality lines. Calculate the distance between pts and each line, then calc max_dist - min_dict, you will get width and height.
My mother language is Chinese
, 그리고 나는 영어 쓰기에 좋은입니다. 그래서 난 그냥 코드로 돌려 :
#!/usr/bin/python3
# 2017.12.13 22:50:16 CST
# 2017.12.14 00:13:41 CST
import numpy as np
def calcPointsWH(pts, theta=0):
# 计算离散点在特定角度的长宽
# Measuring width of points at given angle
th = theta * np.pi /180
e = np.array([[np.cos(th), np.sin(th)]]).T
es = np.array([
[np.cos(th), np.sin(th)],
[np.sin(th), np.cos(th)],
]).T
dists = np.dot(pts,es)
wh = dists.max(axis=0) - dists.min(axis=0)
print("==> theta: {}\n{}".format(theta, wh))
테스트를 위해이 다이아몬드를 보내기
pts = np.array([[100, 200],[200, 26],[300, 200],[200, 373]], np.int32)
for theta in range(0,91, 30):
calcPointsWH(pts, theta)
==> theta: 0
[ 200. 347.]
==> theta: 30
[ 173.60254038 300.51081511]
==> theta: 60
[ 300.51081511 173.60254038]
==> theta: 90
[ 347. 200.]
는 이제 굿나잇, 2017.12.14 00:20:55 CST
입니다.
개체를 회전하고 테두리를 다시 적용하십시오.'getRotationMatrix2D' – ldgorman
왜 안 되죠? 각도를 지원하면 두 개의 직각 선을 만들 수 있습니다. pts와 각 행 사이의 거리를 계산 한 다음 'max_dist - min_dict '를 계산하면 너비와 높이가 표시됩니다. – Silencer