اطلاعیه

Collapse
No announcement yet.

مشکل در برنامه قفل کردن روی هدف

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مشکل در برنامه قفل کردن روی هدف

    سلام دوستان
    کد برنامه :
    کد:
    %%
    AV = aviread ( 'xx.avi' ) ;
    pic = frame2im ( AV ( 1 ) ) ;
    title ( 'Please select object ');
    %pic=im2double(pic);
    imshow(pic);
    ob=impoint(gca,[]);
    
    ob = wait(ob);
    
    for p=1:51
    %%
    pic = frame2im ( AV ( p ) ) ;
    pic2=pic+160;
    bw = im2bw ( pic2 , graythresh(pic2 ) );
    bw=~bw;
    bw = imfill(bw,'holes');
    subplot(1,2,1),imshow(bw)
    subplot(1,2,2),imshow(pic)
    
    %%
    r = bwlabel ( bw ) ;
    y=uint64(ob(1,1));
    x=uint64(ob(1,2));
    n=r(x,y);
    z = regionprops ( r , 'all');
    z=z(n);
    boxz= z.BoundingBox ;
    ob= z.Centroid ;
    imrect ( gca , boxz);
    title (['Coordinates target = ' , num2str(ob)]);
    pause(.00001);
    end
    موقع اجرا خطا میده نمیدونم چیکارش کنم.
    لطفا کسی از دوستان برنامه رو برام رفع عیب کنه خیلی ممنون میشم
    لینک دانلود کد و ویدیو:
    http://www.uploadbaz.com/xfd54osmpf79

    اضافه شده در تاریخ :
    کسی نیست واقعا؟

    #2
    پاسخ : مشکل در برنامه قفل کردن روی هدف

    من تا این حد از کدت را اصلاح کردم که حداقل ارور نده...
    علت خطاهایی که میداد به تغییر نام توابع در ورژن جدید متلب و همچنین دسترسی های غیر مجاز به نوع داده.
    شما باید با ساختار داده هایی که در حین نوشتن برنامه ایجاد میشه آشنا بشی.
    بهتره که برنامه را خط به خط اجرا کنی و مدام در پنجره Workspace حواست به نوع متغییر ها و مقادیر درونشون باشه.
    مثلا نمیشه به طور مستقیم یک struct را درون یک متغییر ریخت.
    ظاهرا از خروجی تابع regionprops به خوبی استفاده نکردی. یکم بیشتر وقت بذاری موفق میشی.
    از breakpoint در برناه استفاده کن و با کلید F10 خط به خط برو جلو تا اشکال کار را پیدا کنی.
    کد:
    %%
    clear all;
    close all;
    % AV = aviread ( 'xx.avi' ) ;
    AV = VideoReader ( 'xx.avi' ) ;
    vidFrames = read(AV);
    nFrames = AV.NumberOfFrames;
    vidHeight = AV.Height;
    vidWidth = AV.Width;
    
    % Preallocate movie structure.
    mov(1:nFrames) = ...
      struct('cdata', zeros(vidHeight, vidWidth, 3, 'uint8'),...
          'colormap', []);
    
    % Read one frame at a time.
    for k = 1 : nFrames
      mov(k).cdata = read(AV, k);
    end
    
    % Play back the movie once at the video's frame rate.
    % movie(mov, 1, AV.FrameRate);
    
    pic = mov(1).cdata ;
    title ( 'Please select object ');
    %pic=im2double(pic);
    imshow(pic);
    ob=impoint(gca,[]);
    
    ob = wait(ob);
    
    
    for p=1:nFrames
    %%
    pic = mov(p).cdata ;
    pic2=pic+160;
    bw = im2bw ( pic2 , graythresh(pic2 ) );
    bw=~bw;
    bw = imfill(bw,'holes');
    subplot(1,2,1),imshow(bw)
    subplot(1,2,2),imshow(pic)
    
    %%
    r = bwlabel ( bw ) ;
    y=uint64(ob(1,1));
    x=uint64(ob(1,2));
    %n=r(x,y);
    z_t = regionprops ( r , 'all');
    % z_t=z(n);
    boxz= z_t.BoundingBox ;
    ob= z_t.Centroid ;
    imrect ( gca , boxz);
    title (['Coordinates target = ' , num2str(ob)]);
    pause(.00001);
    end
    امیدوارم تا حدودی به کارت بیاد. بیش از این نمیخام وقت بزارم. بالاخره کار شماست و بهتره از خم و چمش سر در بیارید

    دیدگاه

    لطفا صبر کنید...
    X