同时调用两个USB单目相机

硕士期间用过双目摄像头,工作了现在配置了两个单目的,稍微代码做了一些改动,主要加了一个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版)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Python中调用多个USB相机,可以使用OpenCV库。首先需要确保每个相机的驱动程序已经正确安装,并且相机已经插入电脑。 首先,使用OpenCV库中的`cv2.VideoCapture()`函数来创建不同的相机实例。这个函数需要传入一个整数参数,表示相机的编号,例如0表示第一个相机,1表示第二个相机,以此类推。如果要打开多个相机,可以创建多个`cv2.VideoCapture()`实例,每个实例对应一个相机。 接下来,可以使用`cv2.VideoCapture()`实例中的`read()`方法来读取相机的图像。由于要读取多个相机的图像,因此需要在一个循环中不断读取每个相机的图像。 下面是一个示例代码,用于同时读取两个USB相机的图像: ```python import cv2 # 创建两个相机实例 cap0 = cv2.VideoCapture(0) cap1 = cv2.VideoCapture(1) while True: # 读取第一个相机的图像 ret0, frame0 = cap0.read() # 读取第二个相机的图像 ret1, frame1 = cap1.read() # 显示图像 cv2.imshow('camera 0', frame0) cv2.imshow('camera 1', frame1) # 等待退出 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放资源 cap0.release() cap1.release() cv2.destroyAllWindows() ``` 上述代码中,`cap0`和`cap1`分别表示两个相机实例,`ret0`和`ret1`表示是否成功读取图像,`frame0`和`frame1`表示相机的图像。在循环中,首先读取每个相机的图像,然后使用`cv2.imshow()`函数显示图像。最后,如果按下键盘上的q键,就会退出循环,释放资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值