我在影像上有圓的引數:中心的半徑和坐標。是否可以沿圓圈回傳像素的位置?我需要沿圓線獲取所有像素值。我嘗試通過下一個解決方案獲取坐標:
...
cx = int(img.shape[1]/2)
cy = int(img.shape[0]/2)
radius = 700
angle = np.linspace(0, 2 * np.pi, 360)
X = (np.round(cx radius * np.cos(angle))).astype(int)
Y = (np.round(cy radius * np.sin(angle))).astype(int)
...
但是,如果角度與半徑不一致,我會錯過相鄰的像素:

uj5u.com熱心網友回復:
你可以得到一個連續的圓作為域 X2 Y2 ≤ R2 的輪廓。如果您觀察對稱性,您會注意到圓可以分解為 8 個弧。考慮從 (R, 0) 到 Y=X 的交點(圖中的八分圓 2)的弧線:它由從 (X, Y) 到 (X, Y 1) 或 (X-1, Y) 的位移組成 1) 僅限。如果我們將其代入磁盤方程,我們需要 X2 (Y 1)2 ≤ R2 或 (X - 1)2 (Y 1)2 ≤ R2,如果可以,我們優先考慮第一個不等式滿意(第二個自動滿意)。
X, Y:= R, 0
while X > Y:
# 8 symmetries
Plot(X, Y); Plot(Y, X); Plot(-X, Y); Plot(-Y, X);
Plot(X, -Y); Plot(Y, -X); Plot(-X, -Y); Plot(-Y, -X);
if X2 (Y 1)2 > R2:
X-= 1
Y = 1

uj5u.com熱心網友回復:
你永遠不可能得到一個圓上的所有點,因為這些點是連續的。你可以做的是在圓上獲得更多的點,使繪圖看起來連續。
將此處要生成的樣本數從 360 更改為更大的值,例如 720。
angle = np.linspace(0, 2 * np.pi, 720)
您可以不斷增加,直到您對結果滿意為止。
但是,當您使用 openCV 繪圖并且所有點都必須是整數時,您很可能仍然存在差距。這就是為什么最好的解決方案是使用openCV的繪圖功能
cv.circle(img,(x_cen,y_cen), radius, colour, thickness)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/447022.html
