How to save image with opened imfreehand line

Hi I've been trying to save a grayscale image with opened imfreehand line (in my case I set the line up to red colour), but to no avail.
I'd like the saved image exactly as what was seen after drawing the line.
Any helps are much appreciated.
Many regards DE

 Accepted Answer

I thought I already gave you the answer in http://www.mathworks.com/matlabcentral/answers/59898#comment_125529 This looks like the same question. Why wasn't this a follow up to that posting? Why is it a brand new question? It looks the same to me.

5 Comments

I was using other app to draw the red line before and this time I'm trying to integrate everything using just MATLAB. And compared to prev enquiry, this OP is using opened imfreehand line instead of closed. The objective is to save the image exactly as what was seen after opened imfreehand line was drawn.
I've been pulling my hairs out for the past few hours for this and I know it's simple but I just couldn't.
My previous guidelines will work since it basically just finds the lowest red pixel in each column.
Once I took the imfreehand coordinate, how do I write the red line as a colored curve into the image, and save the new image as true (rgb) image?
rgbImage = cat(3, grayImage, grayImage, grayImage);
for k = 1:length(x)
row = y(k);
column = x(k);
% Assign red, green, and blue values to this pixel.
rgbImage(row, column, 1) = 255;
rgbImage(row, column, 2) = 0;
rgbImage(row, column, 3) = 0;
end
imwrite(rgbImage, fullFileName);
Thanks IA, as usual. Need to tweak it a little but your code helps a lot.
Now once saved, the idea is to remove the unwanted region below the red line.
I've managed to scan the image and remove the unwanted region. How do I convert the detected red line to black?
Here's my code (red line detection and remove anything below it):
%red line detection and remove unwanted region underneath the red pixel
im = imread(filename);
[m n c] = size(im);
for i=1:n
for j=1:m
if ((im(j,i,1)>=200)&& (im(j,i,2)<200))
break;
else imnew(j,i,:) = im(j,i,:);
end
end
end
imshow(imnew);

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!