硕士期间用过双目摄像头,工作了现在配置了两个单目的,稍微代码做了一些改动,主要加了一个cv2.VideoCapture()
import cv2
import numpy as np
import time
# 设置自动拍摄及拍摄间隔
AUTO = False
INTERVAL = 2
cv2.namedWindow("left", cv2.WINDOW_AUTOSIZE)
cv2.namedWindow("right", cv2.WINDOW_AUTOSIZE)
# 如果笔记本的带摄像头的话就改成1和2
camera0 = cv2.VideoCapture(0)
camera1 = cv2.VideoCapture(1)
camera0.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera1.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
camera0.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
camera1.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)
counter = 0
utc = time.time()
# 存储照片路径
folder = "./image/"
def shot(pos, frame):
global counter
path = folder + pos + "_" + str(counter) + ".jpg"
cv2.imwrite(path, frame)
print("snapshot saved into: " + path)
while True:
ret0, frame0 = camera0.read()
ret1, frame1 = camera1.read()
# 设置拍摄照片分辨率
left_frame = frame0[0:1080, 0:1920]
right_frame = frame1[0:1080, 0:1920]
cv2.imshow('left', frame0)
cv2.imshow('right', frame1)
now = time.time()
if AUTO and now - utc >= INTERVAL:
shot("left", left_frame)
shot("right", right_frame)
counter += 1
utc = now
key = cv2.waitKey(1)
# 退出拍照
if key == ord("q"):
break
# 英文s拍照
elif key == ord("s"):
shot("left", left_frame)
shot("right", right_frame)
counter += 1
camera0.release()
camera1.release()
cv2.destroyWindow("left")
cv2.destroyWindow("right")
参考文章:
OpenCV 打开双目摄像头(python版)