Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Is there any webcam buffering?

Hello huys, I am trying to read single frames from webcam. I can do that using this code:

while(True):
 print "\n\nMain while LOOP\n\n"
 q = raw_input("Take picture? y/n\n")
 if (q == "n"):
  cap.release()
  break
 elif (q == "y"):
  #cap.open(0)
  if(cap.isOpened()):
   start_t = time.clock()
   print "--Trying to capture image..."
   s = False
   frame = None
   try:
    i=0
    while(True):
     s, frame = cap.read()
     i = i + 1
     #cv2.imshow("cam-test", frame)
     cv2.waitKey(1)
     print "Attempts: ", i
     if s: break
    if s:
     print "ok"
   except Exception as inst:
    print "Error occured: ", type(inst)

quit()

As you can see program waits user to press "y" or "n", if he/she press "n" program stops and this is the end, but if he/she press "y" it will try to capture a single frame (the frame it will be processed and then user can see the processed single frame). When the processed is finalized and user sees the result it will return again back to "y" or "n" question. The problem is that if he/she press "y" the captured frame it will not be a "fresh" frame (what camera sees that exactly moment) but it will be the same frame as the first frame. I have noticed that a "fresh" frame camera will take the sixth time user press "y". I am guessing that somewhere (hardware or software) there is a buffer can I change that with opencv?