[英]black area between overlapped circles in opencv - python
我正在實施“氣泡算法”進行分類識別分析。 在這個算法中,我們必須用高斯圓制作掩碼。 圓心將是 1(255),它會在半徑上減小,這將是 0。當我將圓圈放在彼此上以創建蒙版時,我遇到了問題,它會在圓圈之間放置一條黑線,我無法刪除它。 這是我的代碼:
def make_gaussian(circle_center, Gaussian_base):
for t in range(circle_center[1] - radius, circle_center[1] + radius):
for tt in range(circle_center[0] - radius, circle_center[0] + radius):
distance = int(compute_distance(tt, circle_center[0], t, circle_center[1]))
if distance < radius :
value = int(((radius - distance) * (1 / radius)) * 255)
if Gaussian_base[t][tt].mean() < value:
Gaussian_base[t][tt] = [value, value, value]
return Gaussian_base
Gaussian_base = np.zeros((height, width, 3), np.uint8)
for s in centers:
#xmin, ymin, xmax, ymax
Gaussian_base = make_gaussian(s, Gaussian_base)
cv2.imwrite('gaussianMask.jpg', Gaussian_base)
您可以將此列表用作中心:
centers = [(139, 102), (223, 193), (94, 385), (205, 301), (90, 147), (190, 209), (45, 349), (193, 259), (110, 343), (159, 99)]
而 output 是這樣的:在此處輸入圖像描述問題是兩個重疊圓圈之間的黑線(區域)應該被移除,並且連接區域應該是連續的。
嘗試這個...
def make_gaussian(circle_center, Gaussian_base):
for t in range(circle_center[1] - radius, circle_center[1] + radius):
for tt in range(circle_center[0] - radius, circle_center[0] + radius):
distance = int(compute_distance(tt, circle_center[0], t, circle_center[1]))
if distance < radius :
value = int(((radius - distance) * (1 / radius)) * 200)
#if Gaussian_base[t][tt].mean() < value:
Gaussian_base[t][tt] += np.array([value, value, value], dtype=np.uint8)
return Gaussian_base
您張貼的圖片中的“黑線”在球之間是一種視錯覺。 這是一個局部最小值,你的眼睛可以識別。
在圖像編輯器中打開您的圖像。 拿取色器。 沿着球移動並進入“黑線”。 指示的顏色/亮度平滑移動。 它不會下降,也不會變黑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.