: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
なぜでしょうか。あなたは角度を持っていることをサポートして、2つの直交線を作ることができます。 ptsと各行の間の距離を計算し、次に 'max_dist - min_dict'を計算すると、幅と高さが得られます。 – Silencer