Spaces:
Sleeping
Sleeping
import cv2 | |
import numpy as np | |
def pitch(img): | |
""" | |
Detects the cricket pitch in a given image frame using color-based segmentation and edge detection. | |
Args: | |
img: The input image frame (BGR format). | |
Returns: | |
contours: A list of contours detected in the color-masked and edge-processed image, | |
presumed to be the pitch. Returns an empty list if no contours are found. | |
""" | |
imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | |
imgBlur= cv2.GaussianBlur(imgGray, (5, 5), 1) | |
imgThreshold = cv2.Canny(imgBlur, 190, 167) | |
kernel = np.ones((5, 5)) | |
imgDial = cv2.dilate(imgThreshold, kernel, iterations = 2) | |
imgThreshold = cv2.erode(imgDial, kernel, iterations = 2) | |
lower = np.array([190, 167, 99]) | |
upper = np.array([255, 255, 184 ]) | |
mask = cv2.inRange(imgGray, lower, upper) | |
# Find all contours | |
width = 264 | |
height = 2256 | |
imgContours = img.copy() | |
# imgWrap = img.copy() | |
contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) | |
return contours | |
if __name__ == "__main__": | |
cap = cv2.VideoCapture(r"lbw.mp4") # Adjust path if needed | |
while True: | |
frame, img = cap.read() | |
if not frame: | |
break | |
pitch_contours = pitch(img) # Call the placeholder pitch detection | |
img_contours = img.copy() | |
for cnt in pitch_contours: | |
if ( | |
cv2.contourArea(cnt) > 50000 | |
): # Example area filtering - adjust as needed | |
cv2.drawContours( | |
img_contours, cnt, -1, (0, 255, 0), 10 | |
) # Draw pitch contours in green | |
cv2.imshow("Pitch Detection (Placeholder)", img_contours) | |
if cv2.waitKey(1) & 0xFF == ord("q"): | |
break | |
cap.release() | |
cv2.destroyAllWindows() | |