2017-09-16 15 views
0

Octave/Matlabで画像に塗りつぶし矩形(透明度50%)を描画するにはどうすればよいですか?画像とコントロールアルファチャンネルに塗りつぶし矩形を描く

私はそうのように概説された矩形描画する方法を知っている:

img = imread('foo.jpg'); 
imshow(img); 
hold; 
rectangle('Position', [cx, cy, 10, 10], 'EdgeColor', [1,0,0], 'LineWidth', 50, 'LineStyle','-'); 

をしかし、次は透明で塗りつぶされた矩形描画しません。MATLABで

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

をあなたは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'は、 'patch'が塗りつぶす形状の周囲のパスの座標を定義します。 – jodag

+0

hmmまだ描画されている輪郭のある四角形は塗りつぶされていないものですか?何か案は? https://imgur.com/a/zRgIp –

関連する問題