2013-03-13 220 views
0

我想使用Scilab在圖像中添加文本;起初我想用SIVP imshow,但事實證明這個函數不會返回句柄。 IPD對另一方面ShowImage不會返回的句柄,所以我想我可能只是這樣做:Scilab,將圖像添加到圖像

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函數,首先...)。

有什麼想法?

回答

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座標。

1

我使用xstring根據繪圖座標系將註釋放在繪圖上。根據基本圖像的格式,您可以使用imageplot(來自我認爲的SIVP)繪製圖像,其中我相信圖像像素會映射到繪製座標。

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

如果您不能使用imgplot您可能需要手動縮放所有的座標。它沒有聽起來那麼糟糕 - 如果您知道圖像的大小,可以計算出座標系的比例因子。我做了這樣的事情,所以當使用小波工具箱做譜圖時,我可以將軸放到imageplot上。