CLI for image processing with histograms, binary treshold and other functions

Overview

Image-Processing-CLI-in-Rust Build Status

CLI for processing images in Rust. Some implementation is custom and for some functionality it uses 3rd party libraries.

This project uses following libraries:

https://github.com/PistonDevelopers/image

Processed images are being stored in the same folder as the source image using the name of the source image with an appended suffix.

Source: hotelroom.jpg

Copy: hotelroomCopy.jpg

Blur: hotelroomBlur.jpg

Generated histograms are also stored this way.

Implemented functions

  • Binary treshold -o binaryTreshold -v 200
  • (NAIVE) Histogram for colors (RGB) -o histogram
  • (NAIVE) Histogram for grayscale images -o histogramGrayscale
  • Average color -o average
  • Copy: -o copy
  • Thumbnail: -o thumbnail -v 96
  • blur: -o blur -v 4.0
  • brighten: -o brighten -v 10
  • huerotate: -o huerotate -v 10
  • contrast: -o contrast -v 20.0
  • grayscale: -o grayscale
  • invert -o invert

Examples

Copy image

ipcli -o copy --image "D:\Image\hotelroom.jpg"

Create a thumbnail

ipcli -o thumbnail -v 96 --image "D:\Image\hotelroom.jpg"

Generate a historgram of colors

ipcli -o histogram -i "D:\Image\hotelroom.jpg"
IPCLI  0.1
Mikolaj Wawrzyniak <mikolaj.wawrzyniak at fh-dortmund.de>
Basic CLI for image processing

USAGE:
    ipcli [OPTIONS] --image <FILE> --operation <operation>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -i, --image <FILE>             Opens specified image file and uses it for transformations.
    -o, --operation <operation>    Specifies operation to be done on the image
    -v, --value <value>            Value for the transformation. To see what values are needed, check the
                                   documentation.
                                   ```
You might also like...
Real-time 3D orientation visualization of a BNO055 IMU using Bissel and Bevy
Real-time 3D orientation visualization of a BNO055 IMU using Bissel and Bevy

orientation This is a demonstration of real-time visualization of the attitude of a BNO055 IMU across a wireless network to a Bevy app using the Bisse

Small, lightweight and fast library for rendering text with wgpu.

wgpu-text wgpu-text is a wrapper over glyph-brush for fast and easy text rendering in wgpu. This project was inspired by and is similar to wgpu_glyph,

Theorem relational dependencies automatic extraction and visualization as a graph for Lean4.
Theorem relational dependencies automatic extraction and visualization as a graph for Lean4.

Lean Graph Interactive visualization of dependencies for any theorem/definitions in your Lean project. How to use In your browser: lean-graph.com Or r

A 2D vector graphics library optimized for GUIs, written in Rust and wgpu
A 2D vector graphics library optimized for GUIs, written in Rust and wgpu

RootVG A 2D vector graphics library optimized for GUIs, written in Rust and wgpu How it Works Unlike other 2D vector graphics libraries which have a s

A fast, lightweight and extensible implementation of a graph data structure.

fast-graph A fast, lightweight and extensible implementation of a graph data structure. Note ⚠️ There will be some breaking changes in the coming 1-2

Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

Precio is a Rust library that implements the Precio protocol for computing private layered histograms and sums.

Overview of Precio Precio is a Rust implementation of the protocol described in eprint.iacr.org/2021/1490. The goal of the protocol is to enable an an

Quantogram - Approximate Quantile calculation using Histograms
Quantogram - Approximate Quantile calculation using Histograms

Quantogram - Approximate Quantile calculation using Histograms A library for Estimating Online Quantiles of Streams Quantogram accepts a stream of flo

Tool for mass import of hosts into Zabbix (and other API functions)

zabbix-tools A CLI tool for interacting with Zabbix API built in Rust. Designed for Zabbix 6.0. Functions added to test API and add hosts manually or

Striving to create a great Application with full functions of learning languages by ChatGPT, TTS, STT and other awesome AI models
Striving to create a great Application with full functions of learning languages by ChatGPT, TTS, STT and other awesome AI models

Striving to create a great Application with full functions of learning languages by ChatGPT, TTS, STT and other awesome AI models, supports talking, speaking assessment, memorizing words with contexts, Listening test, so on.

Image processing proxy and API, created to allow faster media delivery for the Holaplex storefront.

Description imgopt is an image processing proxy with a very simple API, created to download and dynamically scaledown, convert, and cache different me

Rust Imaging Library's Python binding: A performant and high-level image processing library for Python written in Rust

ril-py Rust Imaging Library for Python: Python bindings for ril, a performant and high-level image processing library written in Rust. What's this? Th

Rust API Client for ImageKit.io a file storage and image processing service

Rust API Client for ImageKit.io a file storage and image processing service Usage You must retrieve your Public and Private Keys from the ImageKit Dev

Image processing operations

imageproc An image processing library, based on the image library. There may initially be overlap between the functions in this library and those in i

An advanced image processing library for Rust.

ImageProc Maintainers: @chyh1990 Note: this project is under active depvelopment, API may change! imageproc is a advanced image proccessing library fo

ePaperify: Framebuffer/image pre-processing library for e-Paper displays

ePaperify: Framebuffer/image pre-processing library for e-Paper displays

An online pipeline for image processing.
An online pipeline for image processing.

carbaseus An online pipeline for image processing. *carbaseus (feminine carbasea, neuter carbaseum)* : first/second-declension adjective 1. made of f

Const equivalents of many [`bytemuck`] functions, and a few additional const functions.

Const equivalents of many bytemuck functions, and a few additional const functions. constmuck uses bytemuck's traits, so any type that implements thos

Takes a folder of images (as a palette), and an image, and figures out how to tile the palette to resemble the image!
Takes a folder of images (as a palette), and an image, and figures out how to tile the palette to resemble the image!

Takes a folder of images (as a palette), and an image, and figures out how to tile the palette to resemble the image!

Comments
  • Added Canny Edge Detector

    Added Canny Edge Detector

    This is an implementation of an edge detector based on the Canny Edge Detection Algorithm. The new operation is called "canny" and it takes 3 floats: sigma (Gaussian blur parameter to reduce noise), min_val (parameter to remove pixels that aren't "strong" enough edge pixels), and max_val (parameter that keeps pixels that are "strong" enough edge pixels).

    opened by EthanTheMaster 0
  • Refactor code, fix bugs, add example to README

    Refactor code, fix bugs, add example to README

    The new code doesn't handle this case: https://github.com/spejss/Image-Processing-CLI-in-Rust/blob/9545f0e68ca6761c6c9387636cfeb5be95109591/src/main.rs#L297 . I don't think the code in question was ever reachable.

    opened by pzmarzly 0
Releases(0.1)
Owner
Miki Graf
Javascript & Python | Fullstack React + AWS with AR/VR | AWS Certified Solutions Architect - SAA
Miki Graf
The library provides basic functions to work with Graphviz dot lang from rust code.

Description The library provides the basic access to the graphs in graphviz format with ability to import into or export from it. Base examples: Parse

Boris 28 Dec 16, 2022
It is useful to put a 2D buffer/image on a window in a platform-independent way

Overview As the popularity of the library minifb shows, it is useful to put a 2D buffer/image on a window in a platform-independent way. Minifb's appr

David Johnson 81 Jan 5, 2023
GLFW3 bindings and idiomatic wrapper for Rust.

glfw-rs GLFW bindings and wrapper for The Rust Programming Language. Example extern crate glfw; use glfw::{Action, Context, Key}; fn main() { le

PistonDevelopers 546 Jan 3, 2023
Safe and rich Rust wrapper around the Vulkan API

Vulkano See also vulkano.rs. Vulkano is a Rust wrapper around the Vulkan graphics API. It follows the Rust philosophy, which is that as long as you do

null 3.6k Jan 3, 2023
A cool, fast maze generator and solver written in Rust

MazeCruncher Welcome to maze cruncher! Download Standalone Here Usage To get started, just run the standalone .exe in target/release or compile and ru

null 69 Sep 20, 2022
A high-performance SVG renderer, powered by Rust based resvg and napi-rs.

resvg-js resvg-js is a high-performance SVG renderer, powered by Rust based resvg and napi-rs. Fast, safe and zero dependencies! No need for node-gyp

一丝 744 Jan 7, 2023
Sub-pixel precision light spot rendering library for astronomy and video tracking applications.

Planetarium Sub-pixel precision light spot rendering library for astronomy and video tracking applications. Example usage use planetarium::{Canvas, Sp

Sergey Kvachonok 5 Mar 27, 2022
A simple and elegant, pipewire graph editor

pw-viz A simple and elegant, pipewire graph editor This is still a WIP, node layouting is kinda jank at the moment. Installation A compiled binary is

null 180 Dec 27, 2022
A cargo subcommand for creating GraphViz DOT files and dependency graphs

cargo-graph Linux: A cargo subcommand for building GraphViz DOT files of dependency graphs. This subcommand was originally based off and inspired by t

Kevin K. 213 Nov 24, 2022
Szalinski: A Tool for Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations

Szalinski: A Tool for Synthesizing Structured CAD Models with Equality Saturation and Inverse Transformations

UW PLSE 24 Aug 15, 2022