在图像上绘制填充矩形并控制alpha通道
Octave/Matlab如何在图像上绘制填充的矩形(具有50%的透明度)?在图像上绘制填充矩形并控制alpha通道
我知道如何绘制的轮廓的矩形,像这样:
img = imread('foo.jpg');
imshow(img);
hold;
rectangle('Position', [cx, cy, 10, 10], 'EdgeColor', [1,0,0], 'LineWidth', 50, 'LineStyle','-');
但下面不会画一矩形并填充是透明的:
img = imread('foo.jpg');
imshow(img);
hold;
%Draw filled red rectangle with 50% transparency.
rectangle('Position', [cx, cy, 10, 10], 'FaceColor', [1,0,0, 0.5], 'LineWidth', 50, 'LineStyle','-');
在MATLAB中,你可以使用patch
代替rectangle
。
px = [0 1 1 0]*width + x;
py = [0 0 1 1]*height + y;
patch(px, py, 'Black', 'FaceColor', [1,0,0], 'LineWidth', 50, 'LineStyle', '-', 'FaceAlpha', 0.5);
谢谢我会研究这个功能。为什么像'patch'和'fill'这样的函数只有x,y参数,而不是x,y,width,height参数?它是如何知道我想用x和y填充的区域的尺寸? –
我编辑的问题,使x,y,宽度,高度更清晰。 'patch'函数可以创建比矩形更复杂的形状。 'px'和'py'定义了一个形状的边界周围的一条路径的坐标,这个''补丁'将被填充。 – jodag
hmm它仍然绘制轮廓矩形不填充?有任何想法吗? https://imgur.com/a/zRgIp –
是否有原因不直接修改'img'? – Andy