[討論] 雙鏡頭preview(vid,himage)的gui問題 ?已回收

看板MATLAB作者 (白開水)時間13年前 (2011/04/10 17:12), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
前輩好: 我後來有用preview(vid1,himage1) 來使用是可以運作雙攝影機的,但是有兩個問題請教? (這邊gui有設一個按鈕1對應一個axes1,一個按鈕2對應一個axes2 ) 問題1: 我發現當我用preview(vid,himage1)來顯示時都會有畫面忽然變黑但是也能辨識的問題 但當我把程式用imshow(bw)來顯示時就不會有黑畫面的干擾,這讓我很煩惱 因為用imshow(bw)就無法同時開啟兩個axes的螢幕run ? 問題2: 當我開啟第一個攝影機運作時除了畫面變黑干擾外,其餘辨識都正常. 但當我開啟第二個攝影機運作時,第一個攝影機的畫面是正常的沒有黑畫面干擾 可是卻沒有之前的辨識能力出來,反而第二個攝影機可以正常辨識運作,但是有黑畫面干擾 . 到底這問題是出在哪兒? 感激不盡 (圖形我是用一個黑圓然後裡面有一個白圓來辨識) 程式碼如下,(按鈕1, 2以此類推)) axes(handles.axes1); vid1=videoinput('winvideo',1,'RGB24_640x480'); vidRes1=get(vid1,'VideoResolution'); nBands1=get(vid1,'NumberOfBands'); set(vid1,'ReturnedColorSpace','rgb'); vid1.FrameGrabInterval = 6 ; start(vid1) while (vid1.FramesAcquired > -0.1) c = getsnapshot(vid1); gray = rgb2gray(c); bw = im2bw(gray,0.5); bw = medfilt2(bw); bw = ~bw; %bw = fliplr(bw); [L,num] = bwlabel(bw,4); stats = regionprops(L,'Area','Centroid','BoundingBox'); flushdata(vid1); himage1=imshow(zeros(vidRes1(2),vidRes1(1),nBands1)); preview(,himage1); hold on for i = 1:length(stats); a1 = round(stats(i).Centroid); area = stats(i).Area; bb = stats(i).BoundingBox; l = abs(stats(i).BoundingBox(1)+0.5); r = round(stats(i).BoundingBox(4)/3)+a1(1); u = round(stats(i).BoundingBox(4)/2); y(i) = uint8(abs(stats(i).BoundingBox(4)-stats(i).BoundingBox(3)) < 5 && bw(a1(2),a1(1))== 0 && area > 20 && bw(a1(2),l)>0 && bw(a1(2),r)>0) ; switch y(i) case 1 plot(a1(1),a1(2),'+') s=text(a1(1)+15,a1(2), strcat('X: ', num2str(round((a1(1)))), ' Y: ', num2str(round((a1(2)))))); set(s, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize', 12, 'Color', 'red'); % 目標位置 rectangle('Position',bb,'EdgeColor','r','LineWidth',2) end end hold off end stop(vid1) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.96.64.41
文章代碼(AID): #1DeNHlol (MATLAB)