Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

python video capture loop

I've written a simple script to continuously capture snapshots from my webcam. My only issue is the videocapture module doesn't always grab an image which in turn crashes the program. I think I could solve this by using an infinite loop but I'm not real certain how to go about it. Here's the script:

from VideoCapture import Device
import datetime
def capt():
  a = datetime.datetime.now().strftime("%Y%m%dT%H%M%S%ms")

  b = str(a)
  cam = Device(devnum=0)
  cam.setResolution(1280, 960)

  cam.saveSnapshot('%s.png' % (b))

for i in range(1, 100000):
  capt()
like image 468
Blomkvist Avatar asked Jan 29 '26 05:01

Blomkvist


1 Answers

Try to use cam.getImage instead of cam.saveSnapshot. cam.getImage returns PIL image, thus you are able to determine whether any frame has been actually grabbed or not. The folloing code hasnt been tested:

from VideoCapture import Device
import datetime
def capt():
  a = datetime.datetime.now().strftime("%Y%m%dT%H%M%S%ms")

  b = str(a)
  cam = Device(devnum=0)
  cam.setResolution(1280, 960)

  return cam.getImage(), b

while True:
  im, b = capt()
  if im:
    break
im.save('%s.png' % (b), 'JPEG')
like image 169
Andrey Sboev Avatar answered Jan 31 '26 20:01

Andrey Sboev



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!