Tag Archives: Pan/Tilt

AI on the Edge LESSON 30: Tune Object Tracker with Mouse Selected ROI

AI on the Edge LESSON 30: Tune Object Tracker with Mouse Selected ROI

Welcome, Makers!

Well, hello there! It is absolutely fantastic to have you back. I’m Paul McWhorter, and today, we are taking a massive step forward in our AI on the Edge journey.

Up until now, we’ve been hard-coding our color thresholds (those pesky Lower Color and Upper Color values) to tell our camera what to look for. That’s fine for a science experiment, but it’s not exactly “smart,” is it? If the lighting changes, or if we want to track a different colored object, we have to go back into the code and manually edit those numbers.

Not anymore!

In today’s lesson, we are building a tool that lets us teach the AI. We’re going to use the mouse to draw a Region of Interest (ROI) right on our camera feed. The system will look at the pixels inside that box, calculate the average Hue, Saturation, and Value, and automatically set our tracking range for us.

This is the kind of professional-level functionality that turns a hobby project into a true, intelligent machine.

The Concept: From Hard-Coding to Dynamic Learning

The magic happens in our mouseAction function. Instead of just reading pixel values, we are now implementing a “click-and-drag” system:

  1. Click and Hold: We capture the startX and startY coordinates.

  2. Drag: We draw a rectangle in real-time so we can see exactly what area we are selecting.

  3. Release: We take that specific slice of the image, convert it to the HSV color space, and use the cv2.mean() function to find the average color properties.

  4. Auto-Tune: We set our LC (Lower Color) and UC (Upper Color) based on that average.

By doing this, the system learns what “object” we want to track on the fly. It’s elegant, it’s powerful, and it feels like real magic when you see those servos snap onto your target after a quick mouse drag.

What We’ve Accomplished

By the end of this lesson, you will have a system that:

  • Visually selects an object using the mouse.

  • Automatically calculates the optimal HSV thresholds for that specific object.

  • Updates the tracking behavior immediately without needing to stop or re-run the code.

  • Maintains that professional “Edge” feel, giving you real-time feedback on your FPS and mouse position data.

A Note on the “Edge”

Remember, we aren’t just running code; we are running on hardware. When we calculate the mean of the ROI, we are doing real image processing on the fly. You’ll notice the Composite and Mask windows updated immediately, giving you a visual confirmation that your “teacher” (you!) has successfully guided the “student” (the AI).

This is the power of working with OpenCV and the Raspberry Pi. You are building a system that observes, thinks, and reacts—all in real-time.

Get Ready to Build

Grab your Pi, make sure your servos are ready to go, and let’s get that camera calibrated. You’ve put in the work to get this far, and today is where all that effort starts to feel really rewarding.

I’m incredibly proud of how far you’ve come. Let’s dive in and start building!

Are you ready to see how accurately your Pi can “see” once you’ve given it the ability to learn from your selections?

In the video lesson we developed the following code.

 

Raspberry Pi LESSON 59: Improved Pan/Tilt Tracking Control Algorithm


 

In this Video Lesson we show an improved control algorithm for tracking an Object of Interest in OpenCV. We develop a simple example of Proportional control, where the correction signal is proportional to the error signal. We show this is a much improved algorithm over our earlier one, which simply applied 1 degree corrections independent of the size of the error. The code we develop in this lesson is included below for your convenience.

 

Raspberry Pi LESSON 58: Control System for Pan/Tilt Camera Hat for RPi Camera

In this video lesson, we should a simple control algorithm for a pan tilt camera to track an Object of Interest in OpenCV. We train the device to recognize an Object of Interest based on color, and then the camera is adjusted to keep the object in the center of the frame as the device moves. For your convenience, the code developed in the lesson is included belos.

 

Jetson Xavier NX Lesson 9: Tracking Objects with Two Cameras in OpenCV

In this lesson we use OpenCV to track an object of interest based on HSV color value. We are running two cameras in parallel, and track the same object in both cameras.  The code below is provided for your convenience, and is the code developed in the video lesson. If you want to play along at home, you can get your NVIDIA Jetson Xavier NX  HERE

In this lesson, we are running two raspberry pi cameras. I like the following ones and have verified that they work on the Xavier NX. You can pick your cameras up HERE.

 

 

Jetson Xavier NX Lesson 8: Controlling Dual Pan/Tilt Raspberry Pi Cameras


In this lesson we show how to independently control two Raspberry Pi Cameras using servo controlled pan/tilt brackets. This work will serve as the foundation for allowing us to create cameras that scan a room and locate objects of interest.

In this lesson, I am using two pan/tilt camera mounts. You can get the gear I am using on amazon HERE. I suggest purchasing two units.

Then, we also need two Version two raspberry pi cameras. I like the following ones, because they include a neat little acrylic case, and the long cable, which makes it work much better on the pan/tilt bracket. You can get the cameras HERE.

If you do not have a Jetson Xavier NX yet, you can pick up the gear I am using below:

  1. First, you will need the Jetson Xavier NX, which you can get HERE:
  2. You will want a quality, large SD card, I have very good luck with this one HERE:
  3. You will need a camera. I have found that the Jetson Xavier NX works very well with most Logitech Webcams, but these cameras are a little hard to find right now. I suggest the best option if you do not have a logitech webcam is to get the Raspberry Pi Version 2 camera, which works very well. You can pick the camera up HERE.
  4. It is optional, but I have found that it is nice to have an extra, longer cable for the Raspberry Pi camera, which is available HERE. Also, a small case/stand for the camera is nice and you can get the one I use HERE.
  5. The Jetson Nano has a slot for a SSD drive. I really like having the SSD drive attached, and makes it much easier to keep your work backed up. The projects in these lessons will work fine with just the SD card, but if you like, the SSD drive makes life easier (note even with SSD drive, you will still need the SD card above). You can get the SSD drive I am using HERE.
  6. You can use USB keyboard and mouse, but I like to preserve my USB slots for other things, so like using a wireless keyboard and mouse. This is optional, but I have found these work well on the Jetson Xavier NX, and you can get what I am using HERE.
  7. You will need an HDMI cable and monitor, which you probably already have.