0

私は初めて Matlab の GUIDE を使用しています。2 つのプッシュ ボタン機能 (どちらも画像を開く) の 1 つを編集しようとしていますが、1 つを編集するとすべてが変更されます。ここに少しのコードがあります:

% --- Executes on button press in Floating.
function Floating_Callback(hObject, eventdata, handles)

clc;
axes(handles.axes1);
[Float, PathName, FilterIndex] = uigetfile('*.bmp');
if(Float ~= 0) 
    Floating = fullfile(PathName, Float);
    FloatArray = imread(Floating);
    imshow(FloatArray);
    axis on; 
end 

% Update handles structure
guidata(hObject, handles);

% hObject    handle to Floating (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --- Executes on button press in Reference.
function Reference_Callback(hObject, eventdata, handles)

clc;
axes(handles.axes2);
[Ref, PathName, FilterIndex] = uigetfile('*.bmp');
if(Ref ~= 0) 
    Reference = fullfile(PathName, Ref);
    ReferenceArray = imread(Reference);
    image(ReferenceArray); 
end 

% Update handles structure
guidata(hObject, handles);

例えば、

image(ReferenceArray) 

画像を RBG で開きますが、

imshow(FloatArray) 

グレースケールで開きます(理由もわかりません)。しかし、私の主な関心事は、開いた後です

imshow(FloatArray)

もう一方の画像は自動的にグレースケールになります。私は非常に混乱しています...また、画像がすでにグレースケールであることを知っている限り、少なくともMSペイントまたはImageJで開いたときです。

4

1 に答える 1

1

GUI 操作を行うときは常に、親ハンドルを明示的に指定することをお勧めします。例えば:

imshow(img, 'Parent',handles.ax1)

axis(handles.ax1, 'on')

イメージとカラーマップに関しては、MATLAB がサポートするイメージのタイプ(インデックス付きとトゥルーカラー)を理解する必要があります。また、Figure にはすべてのイメージに適用されるカラーマップが 1 つしかないことに注意してください。ただし、これを克服するテクニックはあります。

于 2012-07-24T16:08:17.477 に答える