Scilab,为图像添加文字

时间:2013-03-13 17:54:28

标签: matlab image-processing scilab

我想使用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裁剪图像。这就是我得到的:

enter image description here

我找不到关于Scilab帮助的任何相关答案,所以我有点被困在这里。有一个way可以在Matlab中做我想要的,但代码似乎不可能转换为Scilab(在Scilab中没有文本也没有getframe函数,以......开头。)。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我使用xstring根据绘图坐标系将注释放到图上。根据基本图像的格式,您可以使用imageplot(我认为是SIVP)来绘制图像,我相信图像像素会映射到绘图坐标。

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

如果您无法使用imgplot,则可能需要手动缩放所有坐标。它没有听起来那么糟糕 - 如果您知道图像的大小,您可以计算出坐标系的比例因子。我做了类似的事情,所以当使用小波工具箱进行光谱图时,我可以将轴放到imageplot上。

答案 1 :(得分: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

给出了:

enter image description here

我从Scilab用户邮件列表中获得了部分解决方案。正如xenoclast所说,我想我必须使用图像高度来缩放y中的坐标。