2017-09-16 182 views
0

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','-'); 
+0

是否有原因不直接修改'img'? – Andy

回答

0

在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); 
+0

谢谢我会研究这个功能。为什么像'patch'和'fill'这样的函数只有x,y参数,而不是x,y,width,height参数?它是如何知道我想用x和y填充的区域的尺寸? –

+0

我编辑的问题,使x,y,宽度,高度更清晰。 'patch'函数可以创建比矩形更复杂的形状。 'px'和'py'定义了一个形状的边界周围的一条路径的坐标,这个''补丁'将被填充。 – jodag

+0

hmm它仍然绘制轮廓矩形不填充?有任何想法吗? https://imgur.com/a/zRgIp –