เริ่มต้นที่ command window MATLAB
พิมพ์ตามด้านล่างเพื่อเรียก GUI design environment (GUIDE) tools ขึ้นมาใช้งานครับ
>>guide
จะปรากฎ GUIDE Quick Start ---> Blank GUI (default) ---> OK
จากนั้นเลือก สร้าง Push button เพื่อสร้างปุ่มกด และ Axes เพื่อรองรับรูปที่จะเปิดมาแสดง
พร้อมกับ บันทึกเป็นชื่อ OpenImage.fig ขณะเดียว MATLAB ก็สร้าง m-file ขึ้นมาให้เราโดยอัตโนมัติ m-file นี้เองที่เราจะต้องไปแก้ไขเพิ่มเติม source code ให้โปรแกรมทำงานตามที่เราต้องการ โปรแกรมที่สร้างขึ้นก็มีรูปร่างหน้าตาประมาณนี้ครับ
- string จะเป็นตัวอักษรที่แสดงบน GUI ที่เราสร้างขึ้นควรเป็น คำหรือข้อความเพื่อสื่อความหมายถึงหน้าที่ของเครื่องมือนั้นๆ
- Tag จะระบุชื่อของ component นั้น ซึ่งจะปรากฎใน source code (แนะนำว่าให้ตั้งชื่อที่สอดคล้องกับ string เพื่อความง่ายแก่การจำ เผื่อว่าเรามี components เยอะๆ)
ลองสังเกตจากรูปด้านล่างนะครับ
พอกดปุ่ม Run figure (ปุ่มสามเหลี่ยมสีเขียวด้านบน) ก็จะได้โปรแกรมประมาณนี้เลยครับ
แต่โปรแกรมยังทำอะไรไม่ได้ เราต้องไปเพิ่ม code ก่อนครับ
ผมขอยกมาเฉพาะส่วนที่ต้องเพิ่มเติมเท่านั้นครับ เราจะแก้ไขเฉพาะส่วน function callback เท่านั้นครับ ไฟล์เต็มๆโหลดตรงนี้้เลยครับ ===> OpenImage.fig, OpenImage.m
% --- Executes on button press in pushOpen.
function pushOpen_Callback(hObject, eventdata, handles)
% hObject handle to pushOpen (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[F,PathName,FilterIndex] = uigetfile({'*.*','All Files(*.*)'}, 'Select your File ');
input=strcat(PathName,F);
RGBimage=importdata(input); % เก็บรูปไว้ในตัวแปลชื่อ RGBimage
axes(handles.axes1); % ต้องระบุ axes ให้ด้วยว่าจะแสดงตรงไหน
imshow(RGBimage); % เป็นฟังก์ชันการแสดงรูปครับใน MATLAB ครับ
hpixinfo = impixelinfo; % บอก ตำแหน่งที่เม้าท์ชี้ พร้อมค่า R, G และ B ประจำ pixel นั้นๆ
zoom on;
axis off;
guidata(hObject,handles);
% --- Executes during object creation, after setting all properties.
function axes1_CreateFcn(hObject, eventdata, handles)
% hObject handle to axes1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% ฟังก์ชันนี้ต้องสร้างขึ้นเองครับ โดยไปที่ OpenImage.fig คลิ๊กขวาที่ axes1
% เลือก View Callbacks --> CreateFcn จะได้ code ในส่วนนี้ขึ้นมาแต่ไม่ต้องทำอะไร
% Hint: place code in OpeningFcn to populate axes1
% --- Executes on button press in pushExit.
function pushExit_Callback(hObject, eventdata, handles)
% hObject handle to pushExit (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
button = questdlg('Do you want to quit?', ...
'Exit Dialog','Yes','No','No');
switch button
case 'Yes',
disp('Exit RGB SpecAnal');
%Save variables to matlab.mat
save
close(ancestor(hObject,'figure'))
case 'No',
quit cancel;
end
หน้าตาโปรแกรมที่สามารถทำงานได้เป็นแบบนี้ครับ และครั้งต่อไปผมจะแยกแสดงสีของรูป แล้วแสดงที่ละสีครับได้แก่ Red, Green and Blue หรือรูปแบบสีเทา (gray scale image)
ขอบคุณค่ะ รออ่านเพิ่มเติมอยู่นะ
ReplyDeleteขอคำแนะนำเรื่อง image processing ด้วยนะคะ คือยากรุ้เรื่อง การติดต่อกับกล้องเว็บแคม แล้วนำภาพที่ได้มาแสดงบน GUI
ReplyDeleteเบื้องต้นลองเข้าไปดูในนี้ก่อนนะครับ
Deleteเป็นของอาจารย์ท่านหนึ่ง มีรายละเอียดอยู่ครับ
http://www.researchers.in.th/blogs/posts/4284
แล้วยังไงผมลองดู แล้วจะมาโพส อีกครั้งครับ
ผมลองใช้คำสั่งพวกนี้ดูครับ
Delete>>imaqhwinfo('winvideo') % ใช้คำสั่งนี้ตรวจสอบว่ามีกล้องต่อกับ com เรากี่ตัว จะใช้ตัวไหนได้บ้าง
ans =
AdaptorDllName: [1x81 char]
AdaptorDllVersion: '3.2 (R2008b)'
AdaptorName: 'winvideo'
DeviceIDs: {[1] [2] [3]}
DeviceInfo: [1x3 struct]
>> vid=videoinput('winvideo',2);% ผมเลยเลือกใช้ Device2 ครับซึ่งเป็น webcam oker 177 ที่ต่อเอาไว้แล้ว
>> preview(vid);
ผมลองทำให้มาอยู่ใน GUI ดู (แต่ยังไม่สมบูรณ์ ลองเอาไปพัฒนาต่อดูครับ) ตามลิ้งด้านล่างเลย
http://www.mediafire.com/?b67e4zya6bz3mwu,b5y82775xyg9zx5,pyamqr83nhsr0z7,fi4t6f6098bv5w5
โหลดไม่ได้คับ
ReplyDelete