如何从图像中提取每个字符?使用此代码

how to extract each characters from a image?with using this code

我必须从图像中提取每个字符,我正在上传它正在分割水平线的代码,但无法将每个字符与水平线分割循环一起分割。 some1 请帮助更正代码 这是之前的代码:

%%horizontal histogram
H = sum(rotatedImage, 2);
darkPixels = H < 100; % Threshold
% label
[labeledRegions, numberOfRegions] = bwlabel(darkPixels);
fprintf('Number of regions = %d\n', numberOfRegions);
% Find centroids
measurements = regionprops(labeledRegions, 'Centroid');
% Get them into an array
allCentroids = [measurements.Centroid];
xCentroids = int32(allCentroids(1:2:end));
yCentroids = int32(allCentroids(2:2:end));
% Now you can just crop out some line of text you're interested in, into a separate image:
hold off;
plotLocation = 8;
for band = 1 : numberOfRegions-1 
    row1 = yCentroids(band);        
    row2 = yCentroids(band+1);        
    thisLine = rotatedImage(row1 : row2, :);
    subplot(7, 2, plotLocation)
    imshow(thisLine, [])
    %% Let's compute and display the histogram.
    verticalProjection = sum(thisLine, 2);
    set(gcf, 'NumberTitle', 'Off') 
    t = verticalProjection;
    t(t==0) = inf;
    mayukh=min(t);
    % 0 where there is background, 1 where there are letters
    letterLocations = verticalProjection > mayukh; 
    % Find Rising and falling edges
    d = diff(letterLocations);
    startingRows = find(d>0);
    endingRows = find(d<0);
    % Extract each region
    y=1;
    for k = 1 : length(startingRows)
        % Get sub image of just one character...
        subImage = thisLine(:, startingRows(k):endingRows(k)); 
        [L,num] = bwlabel(subImage);
        for z= 1 : num
            bw= ismember( L, z);
            % Construct filename for this particular image.
            baseFileName = sprintf('templates %d.png', y);
            y=y+1;
            % Prepend the folder to make the full file name.
            fullFileName = fullfile('C:\Users\Omm\Downloads\', baseFileName);
            % Do the write to disk.
            imwrite(bw, fullFileName);
            pause(2);
            imshow(bw);
            pause(5)
        end;
        y=y+2;
    end;
    plotLocation = plotLocation + 2;
end

但不分割整行

为什么不简单地使用 regionprops'Image' 属性?

img = imread('http://i.stack.imgur.com/zpYa5.png');  %// read the image
bw = img(:,:,1) > 128;  %// conver to mask

使用一些次要的形态学操作来处理虚假像素

dbw = imdilate(bw, ones(3)); 
lb = bwlabel(dbw).*bw;  %// label each character as a connected component

现在您可以使用regionprops获取每张图片

st = regionprops( lb, 'Image' );

可视化结果

figure;
for ii=1:numel(st),  
    subplot(4,5,ii);
    imshow(st(ii).Image,'border','tight');
    title(num2str(ii));
end