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?