2016-10-05 80 views
1

當我運行我的代碼時,會出現兩個數字,一個名稱爲'圖1',另一個'測試'。我想要做的就是讓imshow顯示'測試'而不是'圖1'。如何將句柄從一個函數傳遞到另一個函數

himg=GUI('name','test','NumberTitle','off'); %where GUI was designed using GUIDE 
handles = guihandles(himg); 
while ishandle(himg) 
    if sum(depthMetaData.IsSkeletonTracked)>0 
     util_skeletonViewer(skeletonJoints,image,1,handles); %refer code below 
    else 
     imshow(image,'Parent',handles.axes1); 
    end 
end 

function [] = util_skeletonViewer(skeleton, image, nSkeleton,handles) 
imshow(image,'Parent',handles.axes1); 

和退出循環使用imshow

錯誤後,我會得到這個錯誤> validateParent(線352) HAX必須是有效的軸柄。 imshow中的錯誤(第257行) validateParent(specific_args.Parent) Error in Main(line 297) imshow(image,'Parent',handles.axes1);

* PS:我真的不知道爲什麼 '圖1',甚至會存在,但。

+0

在GUIDE構建的GUI中是否有軸? – 2016-10-05 06:11:00

+0

是的,它的軸1 –

+0

你是否在'handles = guihandles(himg);'之前創建'axes1'? – erfan

回答

1

在檢查你的問題時,我不確定'guihandles'是否覆蓋了軸柄;在一個例子中重新創建你的問題它沒有。此外,保存手柄時軸是否存在?

請嘗試是否適用以下代碼。

himg=GUI('name','test','NumberTitle','off'); %where GUI was designed using GUIDE 
handles = guihandles(himg); 
handles.axis1 = []; 
while ishandle(himg) 
    if sum(depthMetaData.IsSkeletonTracked)>0 
     util_skeletonViewer(skeletonJoints,image,1,handles); %refer code below 
    else 
     if ~isempty(handles.axes1) 
      imshow(image,'Parent',handles.axes1); 
     else 
      figure(himg) 
      imshow(image,'Parent',gca); 
      handles.axes1 = gca; 
     end 
    end 
end 

function [] = util_skeletonViewer(skeleton, image, nSkeleton,handles) 
    if ~isempty(handles.axes1) 
     imshow(image,'Parent',handles.axes1); 
    else 
     figure(himg) 
     imshow(image,'Parent',gca); 
     handles.axes1 = gca; 
    end 
+0

'guihandles'肯定會返回軸的句柄,如果存在的話。 – erfan

+0

它的工作原理!非常感謝!但關閉GUI後,我會得到錯誤: >錯誤使用imshow> validateParent(第352行) HAX必須是一個有效的軸手柄。 imshow中的錯誤(第257行) validateParent(specific_args.Parent) Main(第342行)中的錯誤 imshow(image,'Parent',handles.axes1); –

+0

我還有一個問題,儘管如果允許,在util_skeletonViewer函數中,我使用'線'來繪製骨架,但它仍然在'圖1'上繪圖,有關如何將它傳遞給GUI的任何想法?我不知道如何擺脫'圖1',一旦我運行我的代碼,就會彈出它! 'line(X1,Y1,'LineWidth',1.5,'LineStyle',' - ','Marker','+','Color','r');' –

相關問題