change grayscale pixel color by xy coordinates
4 次查看(过去 30 天)
显示 更早的评论
I have a piece of code that returns the x and y coordinates of a rectangle that I draw on a grayscale image.
frameA=read('abc.jpg');
imshow(frameA);
H=imrect;
Position = wait(H);
Position contains [x y h w], where x,y = xy coordinates of top left corner of rectangle, h=rectangle height, w =rectangle width. So I have all the coordinates I need.
How can I use these coordinates to modify the color of the pixels in this rectangle?
If I use frameA(x,y) = 1 for instance, the x,y here corresponds to the indices of the pixels and not their spatial coordinates.
0 个评论
采纳的回答
Image Analyst
2015-8-4
With frameA() you need to pass in the row and column, in that order, not x and y in that order. So you'd need frameA(y, x) but even then you'd need to convert y and x to integers because you can't have fractional values: frameA(round(y), round(x)).
To set the values in the rectangle to a particular gray scale, you do something like this
[rows, columns, numberOfColorChannels] = size(frameA);
if numberOfColorChannels > 1
% Convert to grayscale if it's color.
frameA = rgb2gray(frameA);
end
col1 = round(Position(1));
col2 = round(col1 + Position(3));
row1 = round(Position(2));
row2 = round(row1 + Position(4));
frameA(row1:row2, col1:col2) = desiredGrayLevel;
5 个评论
Image Analyst
2015-8-4
If it's gray scale, you can only display it as red via a colormap. To make it really red, it has to be a 3D RGB image.
To indicate some point with a red mark over an image, you can use plot()
imshow(grayImage);
hold on;
plot(column, row, 'r.', 'Markersize', 30);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Red 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!