How to change the function "vision.TextInserter" to function "insertText" in this code ?
2 views (last 30 days)
Show older comments
%% Initialization
redThresh = 0.10; % Threshold for red detection
vidDevice = imaq.VideoDevice('winvideo', 1, 'RGB24_640x480', ... % Acquire input video stream
'ROI', [1 1 640 480], ...
'ReturnedColorSpace', 'rgb');
vidInfo = imaqhwinfo(vidDevice); % Acquire input video property
hblob = vision.BlobAnalysis('AreaOutputPort', false, ... % Set blob analysis handling
'CentroidOutputPort', true, ...
'BoundingBoxOutputPort', true', ...
'MinimumBlobArea', 800, ...
'MaximumBlobArea', 3000, ...
'MaximumCount', 10);
hshapeinsRedBox = vision.ShapeInserter( 'BorderColor', 'Custom', ... % Set Red box handling
'CustomBorderColor', [1 0 0], ...
'Fill', true, ...
'FillColor', 'Custom', ...
'CustomFillColor', [1 0 0], ...
'Opacity', 0.2);
htextins = vision.TextInserter('Text', 'Number of Red Object: %2d', ... % Set text for number of blobs
'Location', [7 2], ...
'Color', [1 0 0], ... % Red Colour
'FontSize', 12);
htextinsCent = vision.TextInserter('Text', '+ X:%4d, Y:%4d', ... % set text for centroid
'LocationSource', 'Input port', ...
'Color', [1 1 0], ... // yellow color
'FontSize', 14);
hVideoIn = vision.VideoPlayer('Name', 'Object Tracking - Avinash.B [2017209043]', ... % Output Video Player
'Position', [100 100 640 480]);
nFrame = 0; % Frame number initialization
%% Processing Loop
while(nFrame < 2000)
rgbFrame = step(vidDevice); % Acquire single frame
rgbFrameMirror = flipdim(rgbFrame,2); % Obtain the mirror image for displaying
rgbgray=rgb2gray(rgbFrameMirror);
diffFrameSub = imsubtract(rgbFrameMirror(:,:,1), rgbgray); % Get red component of the image
diffFrame = medfilt2(diffFrameSub, [3 3]); % Filter out the noise by using median filter
binFrame = im2bw(diffFrame, redThresh); % Convert the image into binary image with the red objects as white
[centroid, bbox] = step(hblob, binFrame); % Get the centroids and bounding boxes of the blobs
centroid = uint16(centroid); % Convert the centroids into Integer for further steps
rgbFrameMirror(1:20,1:165,:) = 0; % put a black region on the output stream
vidIn = step(hshapeinsRedBox, rgbFrameMirror, bbox); % Instert the red box
for object = 1:1:length(bbox(:,1)) % Write the corresponding centroids
centX = centroid(object,1); %Store X Value in centX
centY = centroid(object,2); %Store Y Value in centY
vidIn = step(htextinsCent, vidIn, [centX centY], [centX-6 centY-9]); % Video Insert X,Y Values
end
vidIn = step(htextins, vidIn, uint8(length(bbox(:,1)))); % Count the number of blobs
step(hVideoIn, vidIn); % Output video stream
nFrame = nFrame+1;
end
%% Clearing Memory
release(hVideoIn); % Release all memory and buffer used
release(vidDevice);
clear all;
clc;
0 Comments
Answers (1)
Govind KM
on 24 Sep 2024
Edited: Govind KM
on 24 Sep 2024
Hi Vitaliy,
To use the insertText function in place of vision.TextInserter, lines of code that call vision.TextInserter and then step should be replaced with a single call to the insertText function. For example, in the provided code:
htextins = vision.TextInserter('Text', 'Number of Red Object: %2d', ...
'Location', [7 2], ...
'Color', [1 0 0], ...
'FontSize', 12);
%Lines of code in between
vidIn = step(htextins, vidIn, uint8(length(bbox(:,1))));
should be replaced with
vidIn = insertText(vidIn,[7 2],['Number of Red Object: ',sprintf('%2d',length(bbox(:,1)))], ...
'FontSize',12,'TextColor',[1 0 0]);
More details on the insertText function can be found in the documentation below:
Hope this is helpful!
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!