web-dev-qa-db-ja.com

matlabで画像に線を描く方法は?

私が言うことができる2つのポイントがあります:

  • P(x、y)[ポイントは画像の上部にあります]
  • P '(x'、y ')[ポイントは画像の下部にあります]

今、私はこれらの2点の間に線を描きたい....そして線が画像上に表示されるはずです手段が表示されるはずです。

これを行う方法????

19
chee

画像に線を描く最も簡単な方法は、 [〜#〜] plot [〜#〜] を使用することです。

%# read and display image
img = imread('autumn.tif');
figure,imshow(img)

%# make sure the image doesn't disappear if we plot something else
hold on

%# define points (in matrix coordinates)
p1 = [10,100];
p2 = [100,20];

%# plot the points.
%# Note that depending on the definition of the points,
%# you may have to swap x and y
plot([p1(2),p2(2)],[p1(1),p2(1)],'Color','r','LineWidth',2)

別の色が必要な場合は、文字をrgbcmykwのいずれかに変更するか、RGBトリプレットを使用します(赤は[1 0 0])。書式設定オプションの詳細については、 lineseriesプロパティ をご覧ください。

16
Jonas

バージョンR2014a以降では、次のようにinsertShapeを使用できます。

img = insertShape(img,'Line',[x1 y1 x2 y2],'LineWidth',2,'Color','blue');

同じコマンドで複数の線を描画することもできますが、x1、x2、y2、y3は各行が新しい行を表す列ベクトルでなければなりません。

insertShapeでは、長方形、円、多角形を描くこともできます。

10
Juan Terven

このような:

figure;
hold on;
imagesc(img);
line([x1,x2],[y1,y2],'Color','r','LineWidth',2)
hold off

ここで、yは「下」方向で、xは画像の「右」方向です。必要に応じて、表示されるように色と幅を変更します。

6
Luke

Computer Visionツールボックスがある場合。単純にshapeInserterを使用できます。

チェックアウト http://www.mathworks.com/help/vision/ref/vision.shapeinserter-class.html

行を指定するには、以下の行を使用する必要があります。それ以外の場合、長方形を取得することがあります

例:

%draw a line from point (100,100) to (200,200) on an image saved as nextFrame

line = int32([100 100  200 200]);
shapeInserter = vision.ShapeInserter('Shape', 'Lines');
nextFrame = step(shapeInserter, nextFrame, line);

プロパティを見て、編集できる内容を確認してください。

1
I L
load clown
image(X)
colormap(map)
c = size(X,2)
mid = round(c/2)
X(:,mid) = 1
image(X)
1
MatlabDoug

hlineおよびvline をダウンロードして、_hold on_と組み合わせて使用​​し、 Steve on Image Processing のテクニックを使用できます。または単に彼のテクニックを使用します。いずれにせよ動作します。

0
rownage