How to solve Error using delete. Argument must contain a string.
이전 댓글 표시
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
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
2019년 1월 9일
madhan ravi
2019년 1월 9일
First respond to Jan’s Answer below.
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Creating, Deleting, and Querying Graphics Objects에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!