Постройте прямоугольные блоки на изображении с помощью MATLAB

Здесь я разработал некоторый код для построения блоков на изображении, но я получаю
блоки на другом изображении. Все коробки должны быть на одном изображении. Пожалуйста, помогите мне в этом.

выходное изображение 1

выходное изображение 2

video = VideoReader('parking video1.mp4');
I = read(video,1);
J = read(video,200);
a=104; b=73;
c=104; d=515;
count=0;count1=0;count2=0;
total=10;

for i=1:5

im1=imcrop(I,[a,b,283, 448]);

im3=imcrop(J, [a,b,283, 448]); 

Background1 =abs(im1 - im3);

grayImage1 = rgb2gray(Background1);
% Convert to gray level

 thresholdLevel1 = graythresh(grayImage1);
    % Get threshold.

binaryImage1 = im2bw( grayImage1, thresholdLevel1);
   % Do the binarization


binaryImage1 = bwareaopen(binaryImage1,1000);



ak=bwarea(binaryImage1);


figure, imshow(J);
hold on;  

   if ak>0


     rectangle('Position',[a,b,283, 448],'Edgecolor', 'r');
   else

     rectangle('Position',[a,b,283, 448],'Edgecolor', 'g');


   end
a=a+280;  
end

person akhil s    schedule 26.05.2016    source источник


Ответы (1)


Вы открываете новое окно каждый раз, когда запускаете код. Вы должны указать, какое окно рисунка использовать, прежде чем показывать его.

Итак, вместо этого:

figure, imshow(J);

сделай это:

figure(1), imshow(J);

Это должно отображать изображение в одном и том же окне рисунка (рисунок номер 1) каждый раз.

person kkuilla    schedule 26.05.2016
comment
или откройте фигуру перед циклом for и используйте ее дескриптор в цикле. Как fig1=figure;, а затем for... figure(fig1) ...end. - person shamalaia; 26.05.2016
comment
Честно говоря, ваш вопрос не так четко сформулирован. Не очевидно, что вы пытаетесь сделать. Я думаю, ваша проблема в том, что изображение с красным прямоугольником появляется в одном окне рисунка, а с зеленым - в другом. Это правильно? - person kkuilla; 27.05.2016