[討論] 雙鏡頭preview(vid,himage)的gui問題 ?已回收
前輩好:
我後來有用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