2017-09-16 218 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 –