円ROIの面にストライプを表示したい

2 ビュー (過去 30 日間)
Yuto
Yuto 2021 年 9 月 29 日
回答済み: Kenta 2021 年 10 月 3 日
drawcircleで円ROIを描画しています。StripeColorでエッジ部分をストライプにできることは確認しているのですが,面部分にストライプを表示することは可能でしょうか?
  1 件のコメント
Atsushi Ueno
Atsushi Ueno 2021 年 9 月 29 日
drawcircleで描画した円ROI(Circleオブジェクト)にその様な機能はありません(現時点では)
>面部分にストライプを表示することは可能でしょうか?
不可能ではありませんが、自分で開発する必要があります。円ROIの対話的操作に連動しなければならないのでしょうから、images.roi.Circleを継承し、面の描画メソッドにストライプ描画機能を追加しなければなりません。関係するソースが全て開示されていなければ、開発は難しいでしょう。
I = imread('baby.jpg'); figure; imshow(I); % cute baby
h = images.roi.Circle(gca,'Center',[1000 1000],'Radius',500,'StripeColor','g');
matlab.graphics.internal.getForDisplay('h',h,'images.roi.Circle')
Center: [1000 1000] Children: [0×0 GraphicsPlaceholder] Color: [0 0.4470 0.7410] ContextMenu: [1×1 ContextMenu] Deletable: 1 DrawingArea: 'auto' EdgeAlpha: 1 FaceAlpha: 0.2000 FaceSelectable: 1 HandleVisibility: 'on' InteractionsAllowed: 'all' Label: '' LabelAlpha: 1 LabelTextColor: [0 0 0] LabelVisible: 'on' LineWidth: 2.1818 MarkerSize: 5.8182 Parent: [1×1 Axes] Radius: 500 Selected: 0 SelectedColor: 'none' StripeColor: [0 1 0] Tag: '' Type: 'images.roi.circle' UserData: [] Vertices: [1577×2 double] Visible: on

サインインしてコメントする。

採用された回答

Kenta
Kenta 2021 年 10 月 3 日
clear;clc;close all
I = imread('baby.jpg'); figure; imshow(I);
slashed=imread('slashC.png');
slashedSmall=imresize(slashed,[800 800]);
slashedSmall=repmat(slashedSmall,[1 1 3]);
roi = drawpoint;
x=round(roi.Position(1));
y=round(roi.Position(2));
[h,w]=size(slashedSmall,1:2);
I(x:x+h-1,y:y+w-1,:)=I(x:x+h-1,y:y+w-1,:)-slashedSmall;
figure;imshow(I)
こんにちは、@Atsushi Ueno さまのおっしゃるとおり、用意された関数でそれをクリックした場所に埋め込むのは難しいのかもしれませんね。そういうfile exchangeのコードもあるかもしれませんが。
例えばslashの入った画像を用意しておき、無理やり画像に重ね合わせるとそれっぽくなりました。
全く作りこめてないのでこれでは問題が多くありますが気にいっていただければここから改良してそれ用の関数を自作するのも良いかもしれません。

その他の回答 (0 件)

タグ

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!