我打電話給for
循環中的一些圖像,然後對這些圖像進行一些處理。之後,我使用step
函數在視頻播放器中顯示這些幀及其蒙版。如何將邊界添加到蒙版圖像內的對象?另外,如何使邊界更加粗糙,並在掩模圖像中繪製每個斑點在掩模中的質心?以下是代碼的粗略草圖。如何在step()函數內調用的視頻幀上繪製邊界和質心
videoPlayer = vision.VideoPlayer();
maskPlayer = vision.VideoPlayer();
for ii = 1:nfiles
filenameii = [............]
frame= imread(filenameii);
mask = dOB(frame,BackgroundImg);
% some processing on the images
mask= bwareaopen(mask,27);
boundaries = bwboundaries(mask,'noholes');
B=boundaries{1};
Centroid = regionprops(mask,'centroid');
Centroids = cat(1, Centroid.Centroid);
plot(B(:,2),B(:,1),'g','LineWidth',3);
plot(Centroids(:,1), Centroids(:,2), 'r+', 'MarkerSize', 10); step(videoPlayer,frame);
step(maskPlayer, mask);
P.S:我知道如何顯示它使用hold on
一個數字,但我想在圖像上直接完成這件事在視頻播放器顯示它之前。任何指導將不勝感激。
非常感謝您的迴應。這確實在播放器中顯示blob的邊界,但是它顯示了具有邊界的原始圖像而不是二進制圖像。我想要在二進制圖像周圍顯示邊界。你能告訴我爲什麼這樣嗎?另外我想知道使用bwboundaries和bwperim的區別是什麼。 – BlueBee
啊,我以爲你想在原始圖像,而不是二進制圖像。我會更新我的帖子。 'bwboundaries'和'bwperim'之間的區別在於'bwboundaries'將blob的邊界看作一組'(x,y)'點。 'bwperim'作爲圖像返回blob的邊界。此圖像對繪製像素以在圖上顯示該圖像至關重要。 – rayryeng
非常感謝,它的工作現在完美:)。是否可以增加邊界/邊界的寬度?此外,如何將遮罩圖像頂部的質心繪製爲當前顯示在單獨窗口中的圖形。 – BlueBee