Mon but est d'essayer d'isoler le tribunal dans le cadre ci-dessous et de décrire ce: Comment puis-je isoler plus efficacement un terrain de basket en utilisant OpenCV?
J'utilise OpenCV pour Python et voici mes résultats après avoir pris les mesures suivantes:
- convertir l'image à HSV
- pixels d'isolement dans une plage de teinte donnée
- le développement d'un masque binaire -ET
- Utilisation de détection de bord de Canny
Et voici le résultat de mon détecteur de Canny:
Comme vous pouvez le voir, mon détecteur Canny effectué très mal et il y a beaucoup de le bruit dans mon masque. J'ai essayé certaines techniques, notamment l'érosion et la dilatation, mais elles n'ont pas beaucoup aidé. Que puis-je faire d'autre pour être sûr que lorsque je passerai le masque sur le transformateur Hough Line, je pourrai détecter les bords du court?
Voici un code de référence:
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)
EDIT: Je cherche à reproduire cette recherche: web.stanford.edu/class/ee368/Project_Spring_1415/Reports/.... Je veux isoler le terrain en détectant les lignes droites qui le délimitent afin que je puisse éventuellement utiliser l'homographie pour trouver les coordonnées des joueurs sur le terrain.
Qu'est-ce que vous voulez réellement obtenir à la fin? Avez-vous besoin d'un masque pour le cadre? –
@SergAnuke Je tente de reproduire cette recherche: https://web.stanford.edu/class/ee368/Project_Spring_1415/Reports/Cheshire_Halasz_Perin.pdf. Je veux isoler le terrain en détectant les lignes droites qui le délimitent afin que je puisse éventuellement utiliser l'homographie pour trouver les coordonnées des joueurs sur le terrain. – haroon7