File Exchange

image thumbnail

How to Detect and Track Red Colored Object in LIVE Video

version 1.5 (2.22 KB) by

This Video shows how to detect and track red colored object in LIVE video using MATLAB.

13 Ratings



View License

This code shows how to detect and track red colored object in LIVE video using MATLAB. Not only red, but also green and blue object can be detected using this algorithm.
For deteil documentation please refer to:
For video tutorial please refer to:

Comments and Ratings (26)

could you plz help how to plot centY against time , along the video playing.

Rafia Shaikh

please check this error, and help me out

"??? Undefined variable "imaq" or class "imaq.VideoDevice".

Error in ==> white at 10
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ... % Acquire input video stream"

Akhmad Dias


nmc (view profile)

Do you happen to know how to track the first identified colored object in a video when other objects will appear with the same color without referring to geometry?

Hammad Malik

Tracking isn't working much need some improvements.


kaz (view profile)

got my answer down below thank you sir


kaz (view profile)

sir the video stops immediately after initialization. it just freezes and show stopped. how to solve this error plz. thank you in advance

Suhas Kale

i am using matlab 2010,2013 but following error occurs.
plz help me out to sort this error.

??? Undefined variable "imaq" or class "imaq.VideoDevice".

Error in ==> MATLABProjectCode at 27
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ... % Acquire input video stream


vir (view profile)

sehr gut!

Tomas Sab

very minimalistic and optimized. Works great for simple needs



Kyle (view profile)

This is an extremely impressive and effective code. Don't give a bad rating just because you're experiencing errors. Make sure you've installed all the necessary toolboxes and add-ons, and that your resolution value in VideoDevice is accurate


Thank you.. was Helpful

>> redObjectTrack
Undefined function or variable 'video'.

Error in redObjectTrack (line 18)
data = getsnapshot(video);
What is the problem?please tell

haris fauzi

what should i change in the code if i want to detect yellow colour? is it the threshold value? if yes, what is the threshold value for yellow? tq


i am using matlabR2012a and i am geting the following error message

Error: File: test1.m Line: 27 Column: 14
The expression to the left of the equals sign is not a valid target for an

this corrosponds to line in the code after wile loop begins i.e

while(nFrame < 500)
  rgbimage = step(vidDevice); <<<<<<<<<<<<<<<<<<<<<erroe occured here<<<<<<<<<<<
  rgbFrame = flipdim(rgbimage,2);
  diffFrame = imsubtract(rgbFrame(:,:,1),


Alap (view profile)

I have Matlab 2011a and I also have the Image Acquisition Toolbox installed. However I still get the error mentioned by Faisal below. Is there an updated version of the toolbox or some such thing?

Arindam Bose

Arindam Bose (view profile)

@Faisal: Install Image acquisition toolbox in your MATLAB version.


iam using matlab 2011a and iam getting the following error msg when i
use ur code.
??? Error using ==> step at 81 (i.e, error(nargchk(2,6,ni)); in step.m file)
Not enough input arguments.

Error in ==> RedObjectDetection at 39
rgbFrame = step(vidDevice); % Acquire single frame


Van (view profile)

Faizan Faisal

encountered this error :( Please help
Undefined variable "imaq" or class "imaq.VideoDevice".

Error in redobjectracking (line 10)
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', ... % Acquire input video stream

Arindam Bose

Arindam Bose (view profile)

Please notice the loop counter, I have made it 20 for a shorter demonstration. Please change to several thousands to ensure the suitable run time of the code.

Arindam Bose

Arindam Bose (view profile)

@Masoud : Because, I used a while loop in the middle of code and set the loop counter to around 200 frames. You can change the loop counter to several thousand. I did not make the loop counter Inf because it will cause a little inconvenience. In that case you have to release the camera handle individually by running this code piece "release(vidDevice)".
So its better to have a loop counter. You can change it to several thousands to run it for several minutes. I made it smaller for demonstration.
Make a change in the line:
while(nFrame < 50000)

after running this the program will stop after seconds...
What's the problem????


Fiem (view profile)

Arindam Bose

Arindam Bose (view profile)

In my code I used
vidDevice = imaq.VideoDevice('winvideo', 1, 'YUY2_640x480', 'ROI', [1 1 640 480], 'ReturnedColorSpace', 'rgb');
as my video input adapter.

You should check your image acquisition toolbox for video adapters available in your system. Then arrange the line according to it.



Description changed


Description Changed


description updated


Description Updated. Video Tutorial added.

MATLAB Release
MATLAB 7.14 (R2012a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video