"""Example of capture with multiple camera. """ import PySpin import EasyPySpin import cv2 import numpy as np processor = PySpin.ImageProcessor() # Set default image processor color processing method # *** NOTES *** # By default, if no specific color processing algorithm is set, the image # processor will default to NEAREST_NEIGHBOR method. def main(): # cap = EasyPySpin.MultipleVideoCapture(0) cap = EasyPySpin.MultipleVideoCapture(0, 1) # cap = EasyPySpin.MultipleVideoCapture(0, 1, 2) if not all(cap.isOpened()): print("All cameras can't open\nexit") return -1 while True: read_values = cap.read() #此时frame是灰度图像 for i, (ret, frame) in enumerate(read_values): if not ret: continue #灰度图转换为彩色图 color_img = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR) # 创建一个与原始图像相同大小的3通道彩色图像 color_img_3c = np.zeros_like(color_img) # 将灰度图像的值复制到彩色图像的所有通道中 color_img_3c[:, :, 0] = frame color_img_3c[:, :, 1] = frame color_img_3c[:, :, 2] = frame frame = cv2.resize(color_img_3c, None, fx=0.25, fy=0.25) cv2.imshow(f"frame-{i}", frame) key = cv2.waitKey(30) if key == ord("q"): break cv2.destroyAllWindows() cap.release() if __name__ == "__main__": main()
时间: 2024-02-15 20:28:20 浏览: 148
这是一个利用 PySpin 和 EasyPySpin 库实现多相机捕捉的示例程序。程序首先创建一个 EasyPySpin.MultipleVideoCapture 对象,传入相机的 ID,可以同时捕获多个相机的图像。然后,在不断循环中,使用 cap.read() 函数从相机读取图像,返回一个元组 (ret, frame),其中 ret 表示是否成功读取到图像,frame 为读取到的图像。由于相机读取的图像为灰度图像,程序使用 cv2.cvtColor() 函数将其转换为 BGR 格式的彩色图像。然后,创建一个与原始图像相同大小的 3 通道彩色图像,并将灰度图像的值复制到彩色图像的所有通道中,最后调用 cv2.imshow() 函数显示图像。程序还可以使用 cv2.resize() 函数调整图像大小。最后,如果按下“q”键,则退出循环并释放相机资源。
相关问题
# import pandas as pd # import matplotlib.pyplot as plt # from PIL import Image # import io # # 读取.parquet文件 # # df = pd.read_parquet('../points/wrq_cameratest/training_camera_image_10526338824408452410_5714_660_5734_660.parquet') # # # 获取图像数据列 # image_column = '[CameraImageComponent].image' # i=0 # # 遍历每行数据 # for index, row in df.iterrows(): # # 读取图像数据 # if i<1: # image_data = row[image_column] # # # 创建BytesIO对象 # image_stream = io.BytesIO(image_data) # # # 打开图像 # image = Image.open(image_stream) # # # 显示图像 # plt.imshow(image) # plt.axis('off') # plt.show() # print(df) # print("##") # i=i+1 # else: # exit() # import os import tensorflow.compat.v1 as tf import math import numpy as np import itertools tf.enable_eager_execution() from waymo_open_dataset.utils import range_image_utils from waymo_open_dataset.utils import transform_utils from waymo_open_dataset.utils import frame_utils from waymo_open_dataset import dataset_pb2 as open_dataset FILENAME = '../tools/frames' dataset = tf.data.TFRecordDataset(FILENAME, compression_type='') for data in dataset: frame = open_dataset.Frame() frame.ParseFromString(bytearray(data.numpy())) break (range_images, camera_projections, _, range_image_top_pose) = frame_utils.parse_range_image_and_camera_projection( frame) print('_____________________') print(frame.context)
这段代码的作用是读取 Waymo 开放数据集(Waymo Open Dataset)中的 .tfrecord 文件,并解析其中的帧数据。代码首先导入了所需的库,并指定了待读取的文件路径 FILENAME。然后使用 tf.data.TFRecordDataset 函数读取 .tfrecord 文件,并循环遍历其中的数据。
在每次循环中,代码首先创建一个 open_dataset.Frame() 对象 frame,并使用 frame.ParseFromString() 方法将数据解析为 Frame 对象。接着,代码调用 frame_utils.parse_range_image_and_camera_projection() 函数,将 frame 作为参数传入,解析出 range_images、camera_projections、range_image_top_pose 等数据。
最后,代码打印出 frame.context(上下文信息),并显示了一条分隔线作为输出。
import cv2 import numpy as np import tkinter as tk from tkinter import * from tkinter import filedialog from PIL import ImageTk, Image import matplotlib.pyplot as plt class ImageProcessor: def __init__(self): self.image = None self.roo
这段代码是一个图像处理类的初始化函数,其中包含了一些常用的导入库和变量:
- 导入OpenCV库,用于图像处理;
- 导入NumPy库,用于数组运算;
- 导入Tkinter库,用于GUI界面;
- 导入Pillow库中的ImageTk和Image模块,用于图像的读取和显示;
- 导入matplotlib库中的pyplot模块,用于图像的绘制。
在初始化函数中,首先定义了一个self.image变量,用于存储图像数据。然后通过Tkinter库创建一个窗口,并设置窗口的大小和标题。接着调用OpenCV库中的cv2.namedWindow()函数创建一个图像窗口,并设置窗口名称。最后调用Tkinter库中的pack()函数将创建的窗口显示在屏幕上。
阅读全文