我的目標是儘量在下面的框架隔離法庭,並概述其: 如何使用OpenCV更有效地隔離籃球場?
我使用OpenCV進行Python和這裏採取以下步驟後,我的結果:
- 一個給定的色相範圍
- 開發一個位與內部的圖像轉換爲HSV
- 隔離像素掩模
- 使用Canny邊緣檢測
正如你看到的,我的坎尼探測器表現非常糟糕,有很多的噪音在我的面具。我嘗試了一些技術,包括侵蝕和擴張,但他們沒有太多幫助。
我還能做些什麼來確保何時將面罩傳遞給Hough Line Transformer,它實際上能夠檢測到法院的邊緣?
這裏是參考一些代碼:
img = cv2.imread('imgs/bulls.jpg')
hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
court_color = np.uint8([[[160,221,248]]])
hsv_court_color = cv2.cvtColor(court_color, cv2.COLOR_BGR2HSV)
hue = hsv_court_color[0][0][0]
# define range of blue color in HSV
lower_color = np.array([hue - 10,10,10])
upper_color = np.array([hue + 10,255,255])
# Threshold the HSV image to get only blue colors
mask = cv2.inRange(hsv_img, lower_color, upper_color)
# Bitwise-AND mask and original image
res = cv2.bitwise_and(img,img, mask= mask)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)), plt.title('Original Image'), plt.show()
plt.imshow(mask, cmap='Greys'), plt.title('Mask'), plt.savefig('imgs/mask.jpg'), plt.show()
# Erosion
kernel = np.ones((2,2),np.uint8)
erosions2 = cv2.erode(mask,kernel,iterations = 5)
# Dilation
dilation = cv2.dilate(mask,kernel,iterations = 3)
# Opening
opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
# Closing
closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
編輯:我試圖複製這一研究:web.stanford.edu/class/ee368/Project_Spring_1415/Reports/...。我希望通過檢測勾畫出直線的直線來隔離球場,以便我最終可以使用單應性來找到場上球員的座標。
實際上你想在最後得到什麼?你需要一個框架的面具? –
@SergAnuke我試圖複製這項研究:https://web.stanford.edu/class/ee368/Project_Spring_1415/Reports/Cheshire_Halasz_Perin.pdf。我希望通過檢測勾畫出直線的直線來隔離球場,以便我最終可以使用單應性來找到場上球員的座標。 – haroon7