cv2.imwrite()保存图片

1.文件目录

2.程序

import pyrealsense2 as rs
import numpy as np
import cv2

# 初始化RealSense API
pipeline = rs.pipeline()

# 创建配置对象
config = rs.config()

# 启用深度流和两个红外流
#注意之前显示usb2.1,使用不了,重新拔插,显示usb3.1,可以使用
#config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30)
config.enable_stream(rs.stream.infrared, 1, 1280, 720, rs.format.y8, 30)  # 第一个红外摄像头 左#启用红外摄像头流,索引为1,分辨率为1280x720,格式为Y8,帧率为30fps。
config.enable_stream(rs.stream.infrared, 2, 1280, 720, rs.format.y8, 30)  # 第二个红外摄像头,右
config.enable_stream(rs.stream.color, 1280,720, rs.format.bgr8, 30)

# 开始实时数据流
conf = pipeline.start(config)

depth_sensor = conf.get_device().first_depth_sensor()

depth_sensor.set_option(rs.option.emitter_enabled, 0)  # 0关闭红外激光,1开启

# 创建窗口显示图像
window_name1 = "infrared1"
cv2.namedWindow(window_name1, 0)  # 左目,(镜头朝前)

window_name2 = "infrared2"
cv2.namedWindow(window_name2, 0)  # 右目

i = 20
try:
    while True:
        # 等待下一帧
        frames = pipeline.wait_for_frames()

        # 获取红外图像
        infrared_frame_1 = frames.get_infrared_frame(1)
        infrared_frame_2 = frames.get_infrared_frame(2)
        #获取彩色图像
        color_frame = frames.get_color_frame()

        # 将红外帧转换为可显示的图像
        ir_image_1 = np.asanyarray(infrared_frame_1.get_data())
        ir_image_2 = np.asanyarray(infrared_frame_2.get_data())

        color_image = np.asanyarray(color_frame.get_data())

        # 显示图像
        cv2.imshow(window_name1, ir_image_1)
        cv2.imshow(window_name2, ir_image_2)  # 右目

        cv2.namedWindow('color', 0)
        cv2.imshow('color', color_image)


        #concat0 = cv2.hconcat([img_left, img_right])
        concat0 = cv2.hconcat([ir_image_1, ir_image_2])  #使用cv2库进行水平拼接图像
        cv2.namedWindow("con0", 0)
        cv2.imshow("con0", concat0)



        key = cv2.waitKey(1) & 0xFF

        if key == ord('w'):  # 如果按下'w'键

            #相对路径
            cv2.imwrite("./color_infrared_images/infrared/%d.jpg" % i, concat0)

            cv2.imwrite("./color_infrared_images/color/%d.jpg" % i, color_image)  #可以在文件夹中存入图片 (相对路径)
            
            #cv2.imwrite("./photo/color_infrared_images/color/%d.jpg" % i, color_image)#(不可以保存)虽终端有显示“Save images 0 succeed!”,但无法在文件夹存入图片
            #路径有误,不应该添加photo
            

            #绝对路径
            #cv2.imwrite("E:\pycharm\pyProject_d435i\photo\color_infrared_images\color/%d.jpg" % i, color_image) #可以保存,但不推荐(/\混用)

            #cv2.imwrite("E:\pycharm\pyProject_d435i\photo\color_infrared_images\color\%d.jpg" % i, color_image)#可以保存,但python语法中,反斜杠用作转义字符的开始。
            # 例如,\n 代表换行,\t 代表制表符,所以一般双反斜杠(\\)来表示一个实际的反斜杠,因为单个反斜杠用作转义字符
            #cv2.imwrite("E:\\pycharm\\pyProject_d435i\\photo\\color_infrared_images\\color\\%d.jpg" % i, color_image) #可以保存,  双反斜杠\\

            #cv2.imwrite(r"E:\pycharm\pyProject_d435i\photo\color_infrared_images\color\%d.jpg" % i, color_image) #可以保存,
            # 当使用原始字符串(在字符串前加上 r),Python不会处理字符串中的转义字符,所有的字符都按照字面意义处理。
            # 避免了使用双反斜杠来转义每个反斜杠,使得路径的书写更加直观和简洁

            #cv2.imwrite("E:/pycharm/pyProject_d435i/photo/color_infrared_images/color/%d.jpg" % i, color_image) #可以保存,
            #在Python路径字符串中,斜杠/ 通常不需要特殊处理,可以直接使用。

            print("Save images %d succeed!" % i)
            i += 1



        elif key == ord('q'):  # 如果按下'q'键
            cv2.destroyAllWindows()
            break  # 退出循环,关闭窗口


finally:
    # 停止管道并关闭窗口
    pipeline.stop()

3.一些解释

在Python中,反斜杠(\)和斜杠(/)在文件路径字符串中有不同的用途和含义:

  1. 反斜杠(\:

    • 在普通字符串中,反斜杠用作转义字符的开始。例如,\n 代表换行,\t 代表制表符。
    • 在Windows文件路径中,反斜杠是路径分隔符,但在Python字符串中需要使用双反斜杠(\\)来表示一个实际的反斜杠,因为单个反斜杠用作转义字符。
  2. 斜杠(/:

    • 在Python字符串中,斜杠通常不需要特殊处理,可以直接使用。
    • 在Unix和Linux系统中,斜杠是文件路径的标准分隔符。
    • 在Python中,无论操作系统如何,斜杠都可以用来表示文件路径分隔符,并且不需要转义。
  3. 原始字符串(使用 r 前缀):

    • 当使用原始字符串(在字符串前加上 r),Python不会处理字符串中的转义字符,所有的字符都按照字面意义处理。
    • 这在处理Windows文件路径时特别有用,因为原始字符串中不需要对反斜杠进行转义。原始字符串避免了使用双反斜杠来转义每个反斜杠,使得路径的书写更加直观和简洁
#1.使用双反斜杠
path = "E:\\pycharm\\pyProject_d435i\\photo\\color_infrared_images\\color\\image.jpg"

#2.使用使用斜杠
path = "E:/pycharm/pyProject_d435i/photo/color_infrared_images/color/image.jpg"

#3.使用原始字符串
path = r"E:\pycharm\pyProject_d435i\photo\color_infrared_images\color\image.jpg"

 参考资料:

1.kimi.ai

2.http://t.csdnimg.cn/rESKo

双目摄像头Matlab参数标定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值