ช่วยดูโค้ดให้หน่อยครับ โปรแกรม matlab
ทำยังไงก็ไม่ได้ รบกวนผู้รู้ชี้แนะที
function vdoproc
vid = videoinput('winvideo');
vidRes = get(vid, 'videoResolution');
nBands = get(vid, 'NumberOfBands');
hImage = Image( zeros(vidRes(2), vidRes(1), nBands) );
setappdata(hImage,'UpdatePreviewWindowFcn',@mypreview_fcn);
preview(vid,hImage);
function mypreview_fcn(obj,event,hImage)
set(hImage,CData',rgb2gray(event.Data))
% กำหนดตัวเเปร handle ของ Text สำหรับดัชนีเฟรม
udata.hText = text(10,10,'');
% กำหนดตัวเเปร handle ของ Text สำหรับข้อความเตือน
udata.hAlert = text(200,200,'');
%กำหนดตัวอักษรขนาด30เเละมีสีเเดง
set(udata.hAlert, 'FontSize',30,'clour',[1 0 1]);
%คำนาณจุดภภาพ (Pixel) ทั้งหมดเพื่อใช้คำนาณสัดส่วนการเปลี่ยนเเปลง
udata.hnumPixel = vidRes(2)*vidRes(1);
%กำหนดค่าเริ่มต้นของคัชนีเฟรมเริ่มที่1
udata.framecount = 1;
setappdata(hImage,'UpdatePreviewWindowFcn',@mypreview_fcn);
%นำตัวเเปร udata ใส่ใน UserData ของ Image
%การส่งค่าเข้าหรือฟังก์ชันเรียกกลับได้สะดวก
set (hImage,'UserData');
preview(vid, hImage);
function mypreview_fcn(obj,event,hImage)
%รับค่าตัวแปรต่างๆ ที่ส่งผ่านตัวเเปร udata ใน Userdata ของ Image
udata = get(hImage,'UserData');
%แปลงภาพสีเป็นระดับสีเทา
fgray = rgb2gray(event.Data);
if udata.framecount< 11
%ถ้ายังไม่ถึงเฟรมที่11จะทำการเก็บภาพล่าสุดไว้อ้างอิง
udata.referFrame = fgray;
else
%คำนาณความเเตกต่างของภาพอ้างอิง (udata.referFrame)กับเฟรมภาพปัจจุบัน
Diff = imabsdiff(fgray,udata.referFrame);
%ปัดค่าความเเตกต่างให้เป็น 1 หรือ 0
%เพื่อใช้นับจำนวนจุดภาพที่เปลี่ยนเเปลง
sDiff = im2bw(Diff,.2);
%คำนวณสัดส่วนของจำนวนจุดภาพที่เปลี่ยนเเปลงไปมาเทียบกับจำนวนจุดภาพทั้งหมด
%ที่ส่งมากจากการคำนวณครั้งเเรกในฟังก์ชันหลัก (udata.huumPixel)
Diff = sum(sDiff(:))/udata.hnumPixle;
%แสดงผลค่าที่เปลี่ยนเเปลงด้วย hText
set(udata.hText,'string',['Diff: ' num2str(Diff)]);
if Diff > 0.2
%ถ้าค่าความเปลี่ยนเเปลงมากว่า 0.2 หรือร้อยละ 20
%ใฟ้แสดงข้อความเตือน Alert ผ่าน hAlert
set(udata.hAlert,'string','Alert');
else
%ค่าความเปลี่ยนเเปลงไม่เกิน 0.2 ไม่เเสดงข้อความ
set(udata.hAlert,'string','');
end
end
%แสดงภาพสีเฟรมปกติ
set(hImage, 'CData', event.Data);
%เพื่มค่าดัชนีเฟรมทีละ1
udata.framecount = udata.framecount + 1;
%ปรับปรุงค่าของตัวเเปร udata ผ่าน UserData ของ hImage
set(hImage,'UserData',udata);