Pycharm+OpenCV 打开双目摄像头(python版)

1.简介 

  接下来这个专栏会连续更新yolo+双目测距整个流程的全部文章,包看包会,看不懂来揍我,多点赞收藏哈,谢谢大家。本文主要介绍在Pycharm中使用OpenCV使用双目摄像头,包括:打开双目摄像头、设置相机分辨率、保存图片。

软件:Pycharm  编程语言:Python  主要依赖库:OpenCV

2.双目相机

一般双目相机两个相机都是同帧拍摄的,这相机的分辨率为1920×1520。

3.前期工作

  前期准备工作主要是pycharm软件安装、和OpenCV库的下载。

4.整体流程

  这段代码参考了这篇博客:双目视觉目标追踪及三维坐标获取—python(代码)_根据双目rgb获得相机坐标系中的坐标-CSDN博客

import cv2
import time
import os

AUTO = False  # 自动拍照,或手动按s键拍照
INTERVAL = 2  # 自动拍照间隔

cv2.namedWindow("left")
cv2.namedWindow("right")
camera = cv2.VideoCapture(1)

# 设置分辨率
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 3840)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1520)

# 检查摄像头是否成功打开
if not camera.isOpened():
    print("无法打开摄像头")
    exit()

counter = 0
utc = time.time()
folder = r""  # 拍照文件目录

# 创建左右相机的文件夹
left_folder = os.path.join(folder, "left")
right_folder = os.path.join(folder, "right")
os.makedirs(left_folder, exist_ok=True)
os.makedirs(right_folder, exist_ok=True)

def shot(pos, frame):
    global counter
    if pos == "left":
        path = os.path.join(left_folder, f"left_{counter:04d}.jpg")
    else:
        path = os.path.join(right_folder, f"right_{counter:04d}.jpg")

    cv2.imwrite(path, frame)
    print("snapshot saved into: " + path)

while True:
    ret, frame = camera.read()

    if not ret:
        print("无法获取帧")
        break

    # 裁剪坐标为[y0:y1, x0:x1]    HEIGHT * WIDTH
    left_frame = frame[0:1520, 0:1920]
    right_frame = frame[0:1520, 1920:3840]

    cv2.imshow("left", left_frame)
    cv2.imshow("right", right_frame)

    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
    elif key == ord("s"):
        shot("left", left_frame)
        shot("right", right_frame)
        counter += 1

camera.release()
cv2.destroyAllWindows()

  这个代码有几个值得注意的地方。第一个就是相机id,我的电脑的双目相机后id是1。

  第二个就是分辨率,我这个相机的分辨率是1920×1520,左右相机加起来就是3840×1520,在代码中需要根据自己的分辨率进行修改。这个是需要修改的第一部分:

camera.set(cv2.CAP_PROP_FRAME_WIDTH, 3840)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 1520)

  这个是需要修改的第二部分:

left_frame = frame[0:1520, 0:1920]
right_frame = frame[0:1520, 1920:3840]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值