Site icon Rdx Infotech

Object Tracking based on Colors

Object Tracking based on Colors are tasks that are important and challenging such as video surveillance and vehicle navigation.

Image processing is a method of extracting some useful information by converting images into digital information by performing some operations on it.

Introduction Object Tracking based on Colors

Here we track objects in real-time and we apply some preprocessing steps on each video frame in order to track RGB-colored objects. To detect colored objects we subtract RGB color components from the grayscale image and remove undesirable noise from the image, then remove noise from the image we used a filter.

To detect objects accurately system removes all unwanted objects. Then we convert the grayscale image to a binary image. We used blob analysis methodology to detect the RGB-colored objects. Finally, System will display RGB colored Objects in rectangular boxes using the bounding box methodology. This system tracks all red, blue, and green colored objects and draws a bounding box around them. This system can be used for tracking various colored objects.

Installing Libraries:-

pyautogui: pip install pyautogui

HSV Value:-

BGR to HSV:-

#dst = cv2.cvtColor(src, cv2.COLOR_BGR2HSV)

hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)

Minimum Enclosing Circle:-

#((x, y), radius) = cv2.minEnclosingCircle(countourArea)

((x, y), radius) = cv2.minEnclosingCircle(c)

Moments to find the center of the Area:-

Image moments help you to calculate some features like the center of mass of the object, the area of the object, etc.

#var = cv2.moments(contourArea)

M = cv2.moments(c)

center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))

Drawing Circle:-

# cv2.circle(src, (x,y), int(radius),colour,thickness)

 cv2.circle(frame, (int(x), int(y)), int(radius),  (0, 255, 255), 2)

#cv2.circle(frame, center, 5, (0, 0, 255), -1)

cv2.circle(frame, center, 5, (0, 0, 255), -1)

Block Diagram:-

Source Code:-

import imutils

import cv2

redLower = (157, 93, 203)

redUpper = (179, 255, 255)

camera=cv2.VideoCapture(1)

while True:

(grabbed, frame) = camera.read()

frame = imutils.resize(frame, width=600)

blurred = cv2.GaussianBlur(frame, (11, 11), 0)

hsv = cv2.cvtColor(blurred, cv2.COLOR_BGR2HSV)

mask = cv2.inRange(hsv, redLower, redUpper)

mask = cv2.erode(mask, None, iterations=2)

mask = cv2.dilate(mask, None, iterations=2)

cnts = cv2.findContours(mask.copy(),   cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2] center = None

if len(cnts) > 0:

c = max(cnts, key=cv2.contourArea)

((x, y), radius) = cv2.minEnclosingCircle(c)

M = cv2.moments(c)

center = (int(M["m10"] / M["m00"]), int(M["m01"] / M["m00"]))

if radius > 10:

cv2.circle(frame, (int(x), int(y)), int(radius),

(0, 255, 255), 2)

cv2.circle(frame, center, 5, (0, 0, 255), -1)

print(center,radius)

if radius > 250:

print("stop")

else:

if(center[0]<150):

print("Left")

elif(center[0]>450):

print("Right")

elif(radius<250):

print("Front")

else:

print("Stop")

cv2.imshow("Frame", frame)

key = cv2.waitKey(1) & 0xFF

if key == ord("q"):

break

camera.release()

cv2.destroyAllWindows()

Advantages

  • The system tracks colored objects with good accuracy.
  • Allows for tracking objects in live video.

Disadvantages

  • Low Accuracy in low-resolution camera footage
  • Low Accuracy in poor lighting conditions
Exit mobile version