[英]How to pass handles from one function to another
當我運行我的代碼時,會有兩個數字,一個名為“圖 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) Main 中的錯誤(第 297 行) imshow(image,'Parent',handles.axes1);
*ps:我實際上不知道為什么“圖 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
我也遇到了這個問題,所以我將描述我想出的快速解決方案。 在您知道 handles 正在按照您期望的方式執行的函數中(在我的情況下是OpeningFcn
),我會將句柄保存為應用程序數據:
setappdata(0,'handles',handles);
然后在句柄不代表任何軸的函數中,我會調用:
handles = getappdata(0,'handles');
這樣做然后允許我訪問我定義的軸,例如handles.axes1
。
我在嘗試在參數更改后實現生成的圖像時遇到了同樣的問題。 在我的例子中,我使用了多個圖形,我想在按下按鈕后在最后一個圖形的軸上顯示結果:
ok_mask_button= uicontrol(handles.pan,'Style','pushbutton','Units', 'normal',
'Position',[.55 .9 .08 .06],'FontSize',12,'FontWeight','bold',
'String','Ok','Callback', @Mask_parameters);
所以要使用我的回調函數顯示圖像,解決方案是:
% some code above%
...
ax = gca;
imshow(handles.mask,'Parent',ax)
我需要使用 gca 來指定我想在當前軸上工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.