# cameraunit
`cameraunit` provides a well-defined and ergonomic API to write interfaces to capture frames from CCD/CMOS based
detectors through Rust traits `cameraunit::CameraUnit` and `cameraunit::CameraInfo`. The library additionally
provides the `cameraunit::ImageData` struct to obtain images with extensive metadata.
You can use `cameraunit` to:
- Write user-friendly interfaces to C APIs to access different kinds of cameras in an uniform fashion,
- Acquire images from these cameras in different pixel formats (using the [`image`](https://crates.io/crates/image) crate as a backend),
- Save these images to `FITS` files (requires the `cfitsio` C library, and uses the [`fitsio`](https://crates.io/crates/fitsio) crate) with extensive metadata,
- Alternatively, use the internal [`image::DynamicImage`](https://docs.rs/image/0.24.7/image/enum.DynamicImage.html) object to obtain `JPEG`, `PNG`, `BMP` etc.
## Usage
Add this to your `Cargo.toml`:
```toml
[dependencies]
cameraunit = "1.0.0"
```
and this to your source code:
```rs
use cameraunit::{CameraUnit, CameraInfo, ImageData};
```
## Example
Since this library is mostly trait-only, refer to projects (such as [`cameraunit_asi`](https://github.com/sunipkm/cameraunit_asi)) to see it in action.