我已经从图像中提取了速度符号。 当乘以一个整数得到一个矩阵?
然后,我用matlab中的ocr来检查右下图中的数字。答案是20.我然后将其添加到数组。当数组为disp(array)
时,它应该显示20。 但我不能检查ismember
,所以我开始disp
其他选项。当我尝试disp(A*2)
时,我得到的不是40,而是一个随机数字为100 158 20 20
的数组。这是为什么?我怎样才能检查我原来从number=results.Text
得到的答案是否是20或者是否有if语句? 我的代码:
I = imread('p7.tif');
subplot(2,2,1);imshow(I);title('Original Image');
%sharpen edges
B = imsharpen(I);
subplot(2,2,2);imshow(B);title('sharpened edges');
%find circles
Img = im2bw(B(:,:,3));
minRad = 20;
maxRad = 90;
[centers, radii] = imfindcircles(Img, [minRad maxRad], ...
'ObjectPolarity','bright','sensitivity',0.87);
imagesc(Img);
viscircles(centers, radii,'Color','green');
rect = [centers(1)-(radii - radii/3.5),centers(2)-(radii - radii/3.5),2*(radii-radii/3.5),2*(radii-radii/3.5)];
I2 = imcrop(I,rect);
subplot(2,2,3);imshow(I2);title('crop');
%to gray
gray = rgb2gray(I2);
Icorrected = imtophat(gray, strel('disk', 15));
black = im2bw(gray);
results = ocr(black);
number = results.Text;
A = number;
array = [];
array = [array,A];
disp(array)
%result is 20
disp(A)
%result is 20
disp(A*2)
%results is 100 158 20 20
subplot(2,2,4);imshow(black);title('crop');
编辑: 由于A是一个字符串我试图做到这一点:
A = number;
B = '20';
tf = strcmp(A,B)
但是TF = 0 我怎么能检查A是20或不?
'results.Text'不是一个数值数组,因此'disp(A)'显示的是'20',而不是'20'。将字符数组乘以整数将返回ASCII等效值。尝试'disp('hi'* 2)'。 – excaza
我能否以某种方式检查A是否为20号?或者它包含数字2? – Powisss