Burn Grid onto a Series of Images
    4 次查看(过去 30 天)
  
       显示 更早的评论
    
Hi all-I have a lot of image files and onto each I am trying to place a grid. I'd like to save the grid onto the file, and so produce a new image with the grid in a separate folder. In the end I will have one folder with the original files and a second with the files+grid.
Just now I have this:
for i = 1:fileCount2
    png=d2(i).name;
    image = imread(png);
    imshow(image);
    axis on;
    [rows, columns, numberOfColorChannels] = size(image);
    hold on; 
       stepSize = 20; % Whatever you want.
        for row = 1 : stepSize : rows
        line([1, columns], [row, row], 'Color', 'r', 'LineWidth', 1);
        end
        for col = 1 : stepSize : columns
        line([col, col], [1, rows], 'Color', 'r', 'LineWidth', 1);
        end
   % for x=1:length(fileCount2)
   % outputBaseFileName = sprintf('-%4.4d.png', x); %output filename, each frame numbered from 0001
    outputFullFileName = fullfile(strcat(outputFolder, '\FramesGrids'), strcat(baseFileName, outputBaseFileName)); %full output filename with .avi file number
    imwrite(image, outputFullFileName, 'png'); %write output png file
end
This successfully adds a grid onto the first photo in the folder, and saves a new photo in a separate folder, but the grid is not saved. The grid only shows up when I run the code and produce the figure within Matlab.
So, any advice on how to save the grid? And how to fix my loop so that every photo has a grid added, not just the first?
Thanks in advance!!
4 个评论
  Walter Roberson
      
      
 2019-7-12
				There is a linewidth option for insertshape
You know, it might be easiest to just
%red
YourArray(1:StepSize:Columns, 1:StepSize:Rows, 1) = 255;
YourArray(1:StepSize:Columns, 1:StepSize:Rows, [2 3]) = 0;
if your line width is 1.
采纳的回答
  Image Analyst
      
      
 2019-7-12
        Simply burn it into the image itself:
grayImage = imread('cameraman.tif');
[rows, columns, numberOfColorchannels] = size(grayImage);
% Make grid every 64 rows
for row = 8 : 64 : rows
	grayImage(row, :, :) = 255;
end
% Make grid every 32 columns
for col = 8 : 32 : rows
	grayImage(:, col, :) = 255;
end
imshow(grayImage);

5 个评论
  Image Analyst
      
      
 2019-7-13
				No, swapping positions wouldn't do it because then the badly-named image would not have been defined yet by the time you call fileparts().
[folder, baseFileName, extentions] = fileparts(image); % Will throw error because image is not defined yet.
image = imread('02052019-0006.png');
But whatever, glad you got it working and thanks for accepting.
更多回答(0 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Communications Toolbox 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


