#camera #camera-image #interface #api #api-access #back-end

cameraunit

使用相机捕获图像的高效且直观的接口

9 个稳定版本 (4 个主要版本)

5.1.0 2024 年 5 月 14 日
5.0.0 2024 年 4 月 4 日
4.0.0 2024 年 4 月 2 日
3.1.1 2023 年 10 月 3 日
1.1.0 2023 年 9 月 30 日

184图像 中排名

Download history 180/week @ 2024-05-12 18/week @ 2024-05-19 3/week @ 2024-05-26 9/week @ 2024-06-02 7/week @ 2024-06-09 2/week @ 2024-06-16 3/week @ 2024-06-23

每月下载量 966
用于 2 crate

MIT/Apache

21KB
190

cameraunit

cameraunit 提供了一个定义良好且直观的 API,用于通过 Rust 特性 cameraunit::CameraUnitcameraunit::CameraInfo 编写接口以捕获基于 CCD/CMOS 的探测器的帧。此外,该库还提供了一个 cameraunit::ImageData 结构体,用于获取具有大量元数据的图像。

您可以使用 cameraunit

  • 编写面向用户的接口以访问不同的相机,并统一处理这些接口的 C API,
  • 以不同的像素格式从这些相机获取图像(使用 image crate 作为后端),
  • 将这些图像保存到 FITS 文件中(需要 cfitsio C 库,并使用 fitsio crate),其中包含大量元数据,
  • 或者,使用内部 serialimage::DynamicSerialImage 对象来获取 JPEGPNGBMP 等。

用法

将此添加到您的 Cargo.toml

[dependencies]
cameraunit = "5.1"

并将此添加到您的源代码中

use cameraunit::{CameraUnit, CameraInfo, DynamicSerialImage, OptimumExposureBuilder, SerialImageBuffer};

示例

由于此库主要使用特性,请参阅项目(例如 cameraunit_asi)以了解其实际应用。

注意

该接口提供了两个特性

  1. CameraUnit:此特性支持对摄像头的广泛访问,并提供用于修改摄像头状态的API,例如更改曝光、探测器上的感兴趣区域等。实现此特性的对象不应从Clone特性派生,因为理想情况下图像捕获应在单个线程中发生。
  2. CameraInfo:此特性支持对摄像头的有限访问,并提供用于获取维护数据(如温度、增益等)的API,同时允许对摄像头状态的有限修改,例如更改探测器温度设定点、开启和关闭冷却器等。

理想情况下,实现摄像头接口的crate应该

  1. 为一个不允许克隆的struct实现CameraUnitCameraInfo,并实现第二个更小的结构,该结构允许克隆并仅为此结构实现CameraInfo
  2. 提供获取可用摄像头数量、摄像头的唯一标识和根据唯一标识打开摄像头的函数。另外,还可以提供打开第一个可用摄像头的函数。
  3. 成功打开摄像头后,应返回一个包含两个对象的元组——一个实现CameraUnit特性和另一个实现CameraInfo特性。第二个对象应该是可克隆的,以便在需要处理维护功能时传递给某些线程。

依赖关系

~17MB
~242K SLoC