How can I use imfindcircles in real time video?

2 次查看(过去 30 天)
I have written below code which gives photo from camera and mark circles on them
vid = videoinput('winvideo', 1, 'RGB24_640x480');
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb')
vid.FrameGrabInterval = 5;
data = getsnapshot(vid);
[center,radii] = imfindcircles(data,[20 60],'ObjectPolarity','dark','Sensitivity',0.9,'Method','twostage');
imshow(data)
h=viscircles(center,radii);
how can I make this working in real time?

回答(3 个)

Image Analyst
Image Analyst 2013-3-13
You may not be able to. How long does it take to call imfindcircles()? Wrap it in tic and toc to find out. It may take longer than 1/30th of a second or whatever your definition of "real time" is.

kurczak
kurczak 2013-3-14
It takes to long for this operation. I worked on this for a while and i add something like this
while(vid.FramesAcquired<=200)
data = getsnapshot(vid);
imshow(data)
[center,radii] = imfindcircles(data,[20 60],'ObjectPolarity','dark','Sensitivity',0.9,'Method','twostage');
h=viscircles(center,radii);
end
It's working but the image is to slow it's supposed to be live. I know I'm operating on photos from camera. Using getdata() I get frames but then I can't use imffindcicles beacuse it's operating on photos.
  1 个评论
Image Analyst
Image Analyst 2013-3-14
Well it was just a suggestion. You're free to work on a faster method. And no, I don't have one ready to hand over to you, or even know of one. Plus I don't use Simulink.

请先登录,再进行评论。


Spandan Tiwari
Spandan Tiwari 2013-3-20
Two ways to get IMFINDCIRCLES run faster in your code are:
1) Sending in the image at a lower resolution.
2) Use smaller radius range, if possible.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by