Home > Software engineering >  How to capture a 500 images from a video through webcam in opencv python?
How to capture a 500 images from a video through webcam in opencv python?

Time:03-13

I'm using the below code to capture images from webcam. But i need only some no.of images to be captured on click.

 
# Opens the inbuilt camera of laptop to capture video.
cap = cv2.VideoCapture(0)
i = 0
 
while(cap.isOpened()):
    ret, frame = cap.read()
     
    # This condition prevents from infinite looping
    # incase video ends.
    if ret == False:
        break
     
    # Save Frame by Frame into disk using imwrite method
    cv2.imwrite('Frame' str(i) '.jpg', frame)
    i  = 1
 
cap.release()
cv2.destroyAllWindows()```

CodePudding user response:

Assuming you want 500 images add this:

...
    i =1
    if (i 1)P0==0:
        break

CodePudding user response:

that would be easy. you can use k = cv2.waitKey(1) and check what button was pressed. here is a simple example:

import cv2


def main():
    cap = cv2.VideoCapture(0)
    if not cap.isOpened():  # Check if the web cam is opened correctly
        print("failed to open cam")
        return -1
    else:
        print('webcam open')

    for i in range(10 ** 10):
        success, cv_frame = cap.read()
        if not success:
            print('failed to capture frame on iter {}'.format(i))
            break
        cv2.imshow('click t to save image and q to finish', cv_frame)
        k = cv2.waitKey(1)
        if k == ord('q'):
            print('q was pressed - finishing...')
            break
        elif k == ord('t'):
            print('t was pressed - saving image {}...'.format(i))
            image_path = 'Frame_{}.jpg'.format(i)  # i recommend a folder and not to save locally to avoid the mess
            cv2.imwrite(image_path, cv_frame)

    cap.release()
    cv2.destroyAllWindows()
    return


if __name__ == '__main__':
    main()

  • Related