How to change the function "vision.TextInserter" to function "insertText" in this code ?

26 次查看(过去 30 天)
%% 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;

回答(1 个)

Govind KM
Govind KM 2024-9-24
编辑:Govind KM 2024-9-24
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!

类别

Help CenterFile Exchange 中查找有关 Image Processing and Computer Vision 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by