我的目标是尽量在下面的框架隔离法庭,并概述其: 如何使用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