0

Scilabを使用して画像にテキストを追加したいと思います。最初はSIVPimshowを使用したかったのですが、この関数はハンドルを返さないことがわかりました。一方、IPDのShowImageはハンドルを返すので、私はただできると思いました:

sceneImgFigure = ShowColorImage(sceneImg,"Scene");

for k=1:size(inspectedScene)
    uicontrol(sceneImgFigure, ...
              "style", "text", ...
              "string", mtlb_num2str(inspectedScene(k).alocated_label), ...
              "position", [inspectionModel(k).centroid(1) inspectionModel(k).centroid(2) 20 20], ...
              "fontsize",15, ...
              "BackgroundColor",[0.9,0.9,0.9]);
end

しかし、uicontrolを使用すると、画像座標ではなくグラフィック座標を使用するため、テキストが間違った場所に表示されます。横に、ShowImageは画像をトリミングします。ここで私が得るもの:

ここに画像の説明を入力してください

Scilabのヘルプに関連する答えが見つからないため、ここで立ち往生しています。Matlabでやりたいことを行う方法はありますが、コードをScilabに変換することは不可能のようです(Scilabにはテキストもgetframe関数もありません...)。

何か案が ?

4

2 に答える 2

1

xstringプロット座標系に従ってプロットに注釈を付けるために使用します。ベース画像の形式によっては、imageplot(SIVPから)使用して画像を描画できる場合があります。画像ピクセルは座標をプロットするようにマップされていると思います。

xstring(inspectionModel(k).centroid(1), inspectionModel(k).centroid(2), mtlb_num2str(inspectedScene(k).alocated_label))

使用できない場合imgplotは、すべての座標を手動でスケーリングする必要がある場合があります。思ったほど悪くはありません。画像のサイズがわかっている場合は、座標系の倍率を計算できます。imageplotウェーブレット ツールボックスを使用してスペクトログラムを実行するときに軸を に配置できるように、このようなことを行いました。

于 2013-03-14T15:07:47.417 に答える
0

これを解決するために私がしたことは次のとおりです(いつか誰かに役立つかもしれない場合に備えて):

ShowColorImage(sceneImg,"Scene");
for i=1:size(inspectedScene)
    xstring(inspectedScene(i).centroid(1)-5, ...
            size(classDispImg,1)-inspectedScene(i).centroid(2)-5, ...
            mtlb_num2str(inspectedScene(i).alocated_label));
    e = gce();
    e.font_size = 1; 
    e.font_foreground = color(0,0,0);
end

与える:

ここに画像の説明を入力

Scilab ユーザーのメーリング リストからソリューションの一部を入手しました。xenoclast が言ったように、画像の高さを使用して座標を y にスケーリングする必要があると考えました。

于 2013-03-14T16:50:07.420 に答える