0

我想使用 Scilab 在图像中添加文本;起初我想使用 SIVP imshow,但事实证明这个函数没有返回句柄。另一方面,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 回答