How to solve Error using delete. Argument must contain a string.
Mostrar comentarios más antiguos
function [char_out, letter] = projection_profileBeta()
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
%format compact;
%format loose;
global caption;
img_biner =imread('text_document.jpg');
%find the vertical profile
verticalProfile = sum(binaryImage, 2);
% Find dividing lines between the characters.
props = regionprops(verticalProfile == 0, 'Centroid');
%props = regionprops(horizontalProfile <= 1, 'Centroid'); % new modified
xyCentroids = [props.Centroid];
%dividingLines = xyCentroids(1:2:end)
dividingLines = xyCentroids(2:2:end)
% Extract each line.
global hSubplots;
figure(1);
indexSubplot = (1:10);
% indexSubplot2 = (6:10);
for k = 1 : length(dividingLines)-1
thisX = round(dividingLines(k));
nextX = round(dividingLines(k+1));
subplot(20, 10, indexSubplot );
thisLetter = binaryImage(thisX:nextX, :); % line cropping
imshow(thisLetter);
caption = sprintf('Letter #%d', k);
title(caption, 'FontSize', 8);
indexSubplot = indexSubplot + 10;
%% Cropping Lines into Character
char_out = horizontal_profile(thisLetter);
%% End
pause(0.5) % se we can se every cropping
% indexSubplot = (indexSubplot) + 3;
% indexSubplot2 = (indexSubplot2) + 10;
if k ~= length(dividingLines)-1 % delete hSubplots if k is not euqal to limit loop
delete(hSubplots); % to refresh subplots of characters in the figure 2.
end
end
%SECOND FUNCTION to crop each characters from the each lines
function char_crop = horizontal_profile(img_letters)
global caption;
global hSubplots;
figure(2)
h1 = subplot(4, 12, 1:12);
imshow(img_letters);
title(caption,'FontSize',20);
impixelinfo
% Find horizontal profile
h2 = subplot(4, 12, 13:24);
horizontalProfile = sum(img_letters, 1);
%end
plot(horizontalProfile, 'b-');
title('Horizontal Profile', 'FontSize', 20);
grid on;
% Find dividing lines between the characters.
props2 = regionprops(horizontalProfile == 0, 'Centroid');
%props = regionprops(horizontalProfile <= 1, 'Centroid'); % new modified
xyCentroids2 = [props2.Centroid];
%dividingLines = xyCentroids(1:2:end)
dividingChar = xyCentroids2(1:2:end);
hSubplots = {};
for kk = 1 : length(dividingChar)-1
thisX2 = round(dividingChar(kk));
nextX2 = round(dividingChar(kk+1));
%h3 = subplot(4, 12, indexSub+kk);
h3 = subplot(4, 12, 24+kk);
thisCharacter = img_letters(:, thisX2:nextX2);
%
char_crop = padarray(img_out, [1 1], 'both'); % padding the image by 1 on every sides.
char_crop = imresize(char_crop,[42, 24]); % resizing to be 42m x 24n
char_crop = bwmorph(char_crop, 'thin', Inf);%Image Thinning
%
imshow(char_crop);
caption2 = sprintf('Character #%d', kk);
title(caption2,'FontSize', 12);
%collecting all subplots' positions.
hSubplots{kk} = {hSubplots, h3};
%end
end
% % Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'Outerposition', [0, 0.05, 1, 0.95]);
drawnow;
when i tried this code without separated function , it worked beautifully. but when i separated the code into 2 different function in a m-file, the code gave me error like this:
Error using delete
Argument must contain a string.
Error in projection_profileBETA (line 94)
delete(hSubplots); % to refresh all subplots in the figure 2.
why did it demand a string suddenly on delete parameter ?
thank you
3 comentarios
This line on top of a function is completely meaningless:
clear; % Erase all existing variables. Or clearvars if you want.
There are no variables to clear. This is called "cargo cult programming" and a waste of time.
Do not redefine "char" as a variable, because shadowing important built-in functions causes troubles frequently. But the 2 outputs "[char, letter]" are not defined at all anywhere.
Bachtiar Muhammad Lubis
el 9 de En. de 2019
madhan ravi
el 9 de En. de 2019
First respond to Jan’s Answer below.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre Creating, Deleting, and Querying Graphics Objects en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!