🚧 Under development
VisionX is a robust and comprehensive image processing library written in Rust. It aims to provide a wide range of functionalities similar to OpenCV, allowing developers to perform various image processing tasks efficiently and effectively with built-in batteries (image processing tools for different scenarios/use-cases)
- Reading and Writing Images: Support for various formats like JPEG, PNG, BMP, etc.
- Resizing and Cropping: Functions to resize and crop images.
- Color Space Conversion: Conversion between different color spaces (RGB, Grayscale, HSV, etc.).
- Histogram Equalization: Enhance image contrast.
- Brightness and Contrast Adjustment: Modify image brightness and contrast.
- Smoothing (Blurring): Gaussian blur, median blur, bilateral filter.
- Thresholding: Global, adaptive, and Otsu's thresholding.
- Edge Detection: Sobel, Canny, Laplacian edge detectors.
- Affine Transformations: Translation, rotation, scaling, and shearing.
- Perspective Transformations: Warp images using perspective transformations.
- Erosion and Dilation: Basic morphological operations.
- Opening and Closing: Noise removal and gap closing.
- Convolution and Correlation: Custom kernel filtering.
- Non-Linear Filtering: Median filter, bilateral filter.
- Drawing Functions: Draw lines, circles, rectangles, text on images.
- Mouse and Keyboard Event Handling: Interaction with images via GUI.
# Add this to your Cargo.toml:
[dependencies]
vision_x = "0.1.0"
// Then, add the following to your crate root:
use vision_x;
Here's a basic example of reading an image, converting it to grayscale, and saving the result:
use vision_x::core::Image;
use vision_x::io;
fn main() -> Result<()> {
// Load an image from a file
let img = io::read("path/to/image.jpg")?;
// Convert the image to grayscale
let gray_img = img.grayscale();
// Save the grayscale image
io::write("path/to/gray_image.jpg", &gray_img)?;
// End of operation
Ok(())
}
Contributions are always welcome!
This project is licensed under the MIT License - see the LICENSE file for details.
For any questions or issues, please open an issue on GitHub or contact at [email protected].