PythonのCV2で二つの円を結ぶ
Q&A
解決したいこと
Pythonのcv2で図形を描画しようとしています
下記の図にある通り円Aと円Bがあるとします。
その二つの円を青の斜線で引いてある図形で結びたいと思っています。このように、2つの円を結んで描画するためにはどのようにすればよいでしょうか。
発生している問題・エラー
エラーメッセージが出るわけではないのですが、どんなに修正を繰り返してもズレてしまします。
該当するソースコード
p = (5,3)
r = 3
a = (5,3)
b = (1,1)
vec = b - a
rad = np.arctan2(vec[0], vec[1]) #角度
deg = np.rad2deg(rad) #ラジアン → 度
# 角度θ[°]
theta = deg
# degree → rad に変換
rad = np.deg2rad(theta)
# 移動量を算出
rsinθ = r * np.sin(rad)
rcosθ = r * np.cos(rad)
# 円周上の座標
t = np.array([p[0] + rcosθ, p[1] + rsinθ])
t = t.tolist()
# 角度θ[°]
theta = deg -180
# degree → rad に変換
rad = np.deg2rad(theta)
# 移動量を算出
rsinθ = r * np.sin(rad)
rcosθ = r * np.cos(rad)
# 円周上の座標
t2 = np.array([p[0] + rcosθ, p[1] + rsinθ])
t2 = t2.tolist()
p = (1,1)
r = 1
vec = a - b
rad = np.arctan2(vec[0], vec[1]) #角度
¥deg = np.rad2deg(rad) #ラジアン → 度
# 角度θ[°]
theta = deg
# degree → rad に変換
rad = np.deg2rad(theta)
# 移動量を算出
rsinθ = r * np.sin(rad)
rcosθ = r * np.cos(rad)
# 円周上の座標
t3 = np.array([p[0] + rcosθ, p[1] + rsinθ])
t3 = t3.tolist()
# 角度θ[°]
theta = deg -180
# degree → rad に変換
rad = np.deg2rad(theta)
# 移動量を算出
rsinθ = r * np.sin(rad)
rcosθ = r * np.cos(rad)
# 円周上の座標
t4 = np.array([p[0] + rcosθ, p[1] + rsinθ])
t4 = t4.tolist()
points = np.array([(math.floor(t[0]), math.floor(t[1])), (math.floor(t2[0]), math.floor(t2[1])), (math.floor(t3[0]), math.floor(t3[1])), (math.floor(t4[0]), math.floor(t4[1]))])
cv2.fillConvexPoly(img, points, (255, 255, 0))
自分で試したこと
幾度と修正を行い、試行を繰り返しましたが、一人での解決には限界を感じました。
是非みなさんの知恵をお借りしたく質問させていただきました。
0