Skip to content

Instantly share code, notes, and snippets.

@aikige
Last active December 3, 2021 05:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aikige/bb9f57e9f0e4f7743c36770549d0e168 to your computer and use it in GitHub Desktop.
Save aikige/bb9f57e9f0e4f7743c36770549d0e168 to your computer and use it in GitHub Desktop.
import cv2
from datetime import datetime
def capture(opt):
RESOLUTIONS = { "480p": [640, 480], "720p": [1280, 720], "1080p": [1920, 1080] }
res = opt.get('resolution')
filename = opt.get('filename')
if res not in RESOLUTIONS.keys():
raise RuntimeError('Invalid resolution: ' + res)
cap = cv2.VideoCapture(opt.get('device_id'), cv2.CAP_V4L)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, RESOLUTIONS[res][0])
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, RESOLUTIONS[res][1])
resp = None
ret, frame = cap.read()
if ret:
cv2.imwrite(filename, frame)
cap.release()
#cv2.destroyAllWindows()
return filename
if __name__ == "__main__":
import argparse
from datetime import datetime
filename = datetime.now().strftime("%Y%m%d_%H%M%S.jpg")
parser = argparse.ArgumentParser(description='Capture single image from USB webcam.')
parser.add_argument('filename', nargs='?', default=filename)
parser.add_argument('-i', '--device-id', type=int, default=0)
parser.add_argument('-r', '--resolution', default="480p")
opt = vars(parser.parse_args())
resp = capture(opt)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment