From d2bbf53cc1be7dba311185521c4d1dff88e44264 Mon Sep 17 00:00:00 2001 From: MTBBK Date: Wed, 4 Jan 2023 23:40:05 +0300 Subject: [PATCH] Update 'red.py' --- README.md | 2 - red.py | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+), 2 deletions(-) delete mode 100644 README.md create mode 100644 red.py diff --git a/README.md b/README.md deleted file mode 100644 index 54fb775..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Circle_Detection_OpenCV - diff --git a/red.py b/red.py new file mode 100644 index 0000000..c81989c --- /dev/null +++ b/red.py @@ -0,0 +1,129 @@ +import cv2 +import numpy as np + +# Set up the camera capture +cap = cv2.VideoCapture(0) + +while True: + # Capture the frame from the camera + _, frame = cap.read() + + # Convert the frame to HSV color space + hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + + # Define the lower and upper bounds for the red color + lower_red = np.array([0,100,100]) + upper_red = np.array([10,255,255]) + + # Create a mask for the red color + mask = cv2.inRange(hsv, lower_red, upper_red) + + # Use the mask to detect red circles in the frame + circles = cv2.HoughCircles(mask, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0) + + # Check if any circles were detected + if circles is not None: + # Convert the circles array to integer coordinates + circles = np.round(circles[0, :]).astype("int") + + # Loop through all circles + for (x, y, r) in circles: + # Calculate the area of the circle + area = np.pi * r**2 + + # Draw the circle on the frame + cv2.circle(frame, (x, y), r, (0, 255, 0), 2) + + # Print the area and position of the circle + print("Circle at (x={}, y={}) with area={:.2f}".format(x, y, area)) + + # Show the frame + cv2.imshow("Frame", frame) + + # Wait for the user to press a key + key = cv2.waitKey(1) & 0xFF + + # If the user pressed "q", break the loop + if key == ord("q"): + break + +# Release the camera and destroy the windows +cap.release() +cv2.destroyAllWindows() + + +import cv2 +import numpy as np + +# Set up the camera capture +cap = cv2.VideoCapture(0) + +while True: + # Capture the frame from the camera + _, frame = cap.read() + + # Convert the frame to HSV color space + hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) + + # Define the lower and upper bounds for the red color + lower_red = np.array([0,100,100]) + upper_red = np.array([10,255,255]) + + # Create a mask for the red color + mask = cv2.inRange(hsv, lower_red, upper_red) + + # Use the mask to detect red circles in the frame + circles = cv2.HoughCircles(mask, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0) + + # Check if any circles were detected + if circles is not None: + # Convert the circles array to integer coordinates + circles = np.round(circles[0, :]).astype("int") + + # Initialize the highest intensity to zero + highest_intensity = 0 + + # Initialize the highest intensity circle to None + highest_intensity_circle = None + + # Loop through all circles + for (x, y, r) in circles: + # Calculate the area of the circle + area = np.pi * r**2 + + # Crop the region of interest around the circle + roi = frame[y-r:y+r, x-r:x+r] + + # Calculate the mean intensity of the ROI + intensity = np.mean(roi) + + # Check if this circle has the highest intensity so far + if intensity > highest_intensity: + # Update the highest intensity and highest intensity circle + highest_intensity = intensity + highest_intensity_circle = (x, y, r) + + # Check if a highest intensity circle was found + if highest_intensity_circle is not None: + # Unpack the highest intensity circle coordinates + x, y, r = highest_intensity_circle + + # Draw the circle on the frame + cv2.circle(frame, (x, y), r, (0, 255, 0), 2) + + # Print the area and position of the circle + print("Circle at (x={}, y={}) with area={:.2f} and intensity={:.2f}".format(x, y, area, highest_intensity)) + + # Show the frame + cv2.imshow("Frame", frame) + + # Wait for the user to press a key + key = cv2.waitKey(1) & 0xFF + + # If the user pressed "q", break the loop + if key == ord("q"): + break + +# Release the camera and destroy the windows +cap.release() +cv2.destroyAllWindows()