init
This commit is contained in:
91
test_cameras.py
Normal file
91
test_cameras.py
Normal file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import cv2
|
||||
import time
|
||||
|
||||
# get the installed camera list for initialization.
|
||||
def get_cam_lst(cam_lst=range(0, 24)):
|
||||
arr = []
|
||||
for iCam in cam_lst:
|
||||
cap = cv2.VideoCapture(iCam)
|
||||
if not cap.read()[0]:
|
||||
continue
|
||||
else:
|
||||
arr.append(iCam)
|
||||
|
||||
cap.release()
|
||||
return arr
|
||||
|
||||
def show_cam_img(caps, cam_list):
|
||||
print("INFO: Press 'q' to quit! Press 's' to save a picture, 'n' to change to next camera device!")
|
||||
idx = 0
|
||||
while True:
|
||||
cap_device = caps[idx]
|
||||
ret, frame = cap_device.read()
|
||||
if ret:
|
||||
cv2.imshow('video', frame)
|
||||
else:
|
||||
print("ERROR: failed read frame!")
|
||||
|
||||
# quit the test
|
||||
c = cv2.waitKey(1)
|
||||
if c == ord('q'):
|
||||
break
|
||||
|
||||
# change to next camera device
|
||||
if c == ord('n'):
|
||||
idx += 1
|
||||
if idx >= len(caps):
|
||||
idx = 0
|
||||
continue
|
||||
|
||||
# save the picture
|
||||
if c == ord('s'):
|
||||
if ret:
|
||||
name = 'video{0}_{1}.png'.format(cam_list[idx],
|
||||
time.strftime("%Y-%m-%d_%H:%M:%S", time.localtime()))
|
||||
cv2.imwrite(name, frame)
|
||||
print("saved file: %s!" %name)
|
||||
|
||||
cv2.destroyAllWindows()
|
||||
|
||||
def init_caps(cam_list, resolution=(1280,720)):
|
||||
caps = []
|
||||
for iCam in cam_list:
|
||||
cap = cv2.VideoCapture(iCam)
|
||||
cap.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*"MJPG"))
|
||||
cap.set(3, resolution[0])
|
||||
cap.set(4, resolution[1])
|
||||
caps.append(cap)
|
||||
|
||||
return caps
|
||||
|
||||
def deinit_caps(cap_list):
|
||||
for cap in cap_list:
|
||||
cap.release()
|
||||
|
||||
def show_cameras(video_list=None):
|
||||
if video_list == None:
|
||||
print("Start to search all available camera devices, please wait... ")
|
||||
cam_list = get_cam_lst()
|
||||
err_msg = "cannot find any video device!"
|
||||
else:
|
||||
cam_list = get_cam_lst(video_list)
|
||||
err_msg = "cannot find available video device in list: {0}!".format(video_list) +\
|
||||
"\nPlease check the video devices in /dev/v4l/by-path/ folder!"
|
||||
|
||||
if len(cam_list) < 1:
|
||||
print("ERROR: " + err_msg)
|
||||
return
|
||||
|
||||
print("Available video device list is {}".format(cam_list))
|
||||
caps = init_caps(cam_list)
|
||||
show_cam_img(caps, cam_list)
|
||||
deinit_caps(caps)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# User can specify the video list here.
|
||||
show_cameras([2, 6, 10, 14])
|
||||
|
||||
# Or search all available video devices automatically.
|
||||
# show_cameras()
|
||||
Reference in New Issue
Block a user