masking out the field somewhat more intelligently

This commit is contained in:
2018-06-20 21:04:37 +02:00
parent 0b53d11861
commit 211f835413
2 changed files with 14 additions and 5 deletions

View File

@@ -4,6 +4,7 @@ import os
import json
import cv2
import numpy as np
HERE = os.path.dirname(os.path.realpath(__file__))
@@ -34,8 +35,17 @@ def field_mask(frame, hsv_lower, hsv_upper):
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
blurred = cv2.GaussianBlur(hsv, (25, 25), 20)
thr = cv2.inRange(blurred, tuple(hsv_lower), tuple(hsv_upper))
thr = cv2.erode(thr, None, iterations=4)
thr = cv2.dilate(thr, None, iterations=8)
cnts, _ = cv2.findContours(thr.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
field = max(cnts, key=cv2.contourArea)
field = cv2.convexHull(field)
# print(field)
mask = np.zeros(thr.shape, dtype=np.uint8)
print(mask.dtype)
thr = cv2.cvtColor(thr, cv2.COLOR_GRAY2BGR)
cv2.drawContours(mask, (field,), -1, 255, -1)
# The ususal
thr = cv2.erode(thr, None, iterations=6)
thr = cv2.dilate(thr, None, iterations=20)
return thr
return mask