Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Ai Job Notes | 3,861 | 3 months ago | 2 | |||||||
AI算法岗求职攻略(涵盖准备攻略、刷题指南、内推和AI公司清单等资料) | ||||||||||
Bild | 3,721 | 53 | 3 months ago | 14 | December 15, 2021 | 17 | mit | Go | ||
Image processing algorithms in pure Go | ||||||||||
Js Image Carver | 1,328 | 7 months ago | 2 | mit | TypeScript | |||||
🌅 Content-aware image resizer and object remover based on Seam Carving algorithm | ||||||||||
Ascii_art | 653 | 8 months ago | gpl-2.0 | C | ||||||
Real-Time ASCII Art Rendering Library | ||||||||||
Accord Net Extensions | 318 | 20 | 10 | 8 years ago | 18 | October 09, 2015 | 8 | C# | ||
Advanced image processing and computer vision algorithms made as fluent extensions and built for portability | ||||||||||
Carve | 284 | 1 | 6 years ago | May 22, 2021 | mit | Go | ||||
Go implementation of Seam Carving algorithm. | ||||||||||
Artificio | 269 | 4 years ago | 3 | apache-2.0 | Python | |||||
Deep Learning Computer Vision Algorithms for Real-World Use | ||||||||||
Avir | 265 | 4 months ago | 1 | mit | C++ | |||||
High-quality pro image resizing / scaling C++ library, including a very fast Lanczos resizer | ||||||||||
Connected Components 3d | 247 | 1 | 8 | 25 days ago | 46 | June 24, 2022 | 14 | gpl-3.0 | C++ | |
Connected components on discrete and continuous multilabel 3D & 2D images. Handles 26, 18, and 6 connected variants. | ||||||||||
Signature_extractor | 203 | 2 years ago | mit | Python | ||||||
A super lightweight image processing algorithm for detection and extraction of overlapped handwritten signatures on scanned documents using OpenCV and scikit-image. |
A collection of parallel image processing algorithms in pure Go.
The aim of this project is simplicity in use and development over absolute high performance, but most algorithms are designed to be efficient and make use of parallelism when available.
It uses packages from the standard library whenever possible to reduce dependency use and development abstractions.
All operations return image types from the standard library.
The documentation for the various packages is available here.
Download and compile from sources:
go get github.com/anthonynsimon/bild
Or get the pre-compiled binaries for your platform on the releases page
bild
A collection of parallel image processing algorithms in pure Go
Usage:
bild [command]
Available Commands:
adjust adjust basic image features like brightness or contrast
blend blend two images together
blur blur an image using the specified method
channel channel operations on images
effect apply effects on images
help Help about any command
histogram histogram operations on images
imgio i/o operations on images
noise noise generators
segment segment an image using the specified method
Flags:
-h, --help help for bild
--version version for bild
Use "bild [command] --help" for more information about a command.
For example, to apply a median effect with a radius of 1.5 on the image input.png
, writing the result into a new file called output.png
:
bild effect median --radius 1.5 input.png output.png
bild requires Go version 1.11 or greater.
go get github.com/anthonynsimon/bild/...
package main
import (
"github.com/anthonynsimon/bild/effect"
"github.com/anthonynsimon/bild/imgio"
"github.com/anthonynsimon/bild/transform"
)
func main() {
img, err := imgio.Open("input.jpg")
if err != nil {
fmt.Println(err)
return
}
inverted := effect.Invert(img)
resized := transform.Resize(inverted, 800, 800, transform.Linear)
rotated := transform.Rotate(resized, 45, nil)
if err := imgio.Save("output.png", rotated, imgio.PNGEncoder()); err != nil {
fmt.Println(err)
return
}
}
import "github.com/anthonynsimon/bild/adjust"
result := adjust.Brightness(img, 0.25)
result := adjust.Contrast(img, -0.5)
result := adjust.Gamma(img, 2.2)
result := adjust.Hue(img, -42)
result := adjust.Saturation(img, 0.5)
import "github.com/anthonynsimon/bild/blend"
result := blend.Multiply(bg, fg)
Add | Color Burn | Color Dodge |
---|---|---|
![]() |
![]() |
![]() |
Darken | Difference | Divide |
![]() |
![]() |
![]() |
Exclusion | Lighten | Linear Burn |
![]() |
![]() |
![]() |
Linear Light | Multiply | Normal |
![]() |
![]() |
![]() |
Opacity | Overlay | Screen |
![]() |
![]() |
![]() |
Soft Light | Subtract | |
![]() |
![]() |
import "github.com/anthonynsimon/bild/blur"
result := blur.Box(img, 3.0)
result := blur.Gaussian(img, 3.0)
import "github.com/anthonynsimon/bild/channel"
result := channel.Extract(img, channel.Alpha)
result := channel.ExtractMultiple(img, channel.Red, channel.Alpha)
import "github.com/anthonynsimon/bild/effect"
result := effect.Dilate(img, 3)
result := effect.EdgeDetection(img, 1.0)
result := effect.Emboss(img)
result := effect.Erode(img, 3)
result := effect.Grayscale(img)
result := effect.Invert(img)
result := effect.Median(img, 10.0)
result := effect.Sepia(img)
result := effect.Sharpen(img)
result := effect.Sobel(img)
result := effect.UnsharpMask(img, 0.6, 1.2)
import "github.com/anthonynsimon/bild/histogram"
hist := histogram.NewRGBAHistogram(img)
result := hist.Image()
import "github.com/anthonynsimon/bild/noise"
result := noise.Generate(280, 280, &noise.Options{Monochrome: false, NoiseFn: noise.Uniform})
result := noise.Generate(280, 280, &noise.Options{Monochrome: true, NoiseFn: noise.Binary})
result := noise.Generate(280, 280, &noise.Options{Monochrome: true, NoiseFn: noise.Gaussian})
result := noise.GeneratePerlin(280, 280, 0.25)
import "github.com/anthonynsimon/bild/paint"
// Fuzz is the percentage of maximum color distance that is tolerated
result := paint.FloodFill(img, image.Point{240, 0}, color.RGBA{255, 0, 0, 255}, 15)
import "github.com/anthonynsimon/bild/segment"
result := segment.Threshold(img, 128)
import "github.com/anthonynsimon/bild/transform"
// Source image is 280x280
result := transform.Crop(img, image.Rect(70,70,210,210))
result := transform.FlipH(img)
result := transform.FlipV(img)
result := transform.Resize(img, 280, 280, transform.Linear)
Nearest Neighbor | Linear | Gaussian |
---|---|---|
![]() |
![]() |
![]() |
Mitchell Netravali | Catmull Rom | Lanczos |
![]() |
![]() |
![]() |
// Options set to nil will use defaults (ResizeBounds set to false, Pivot at center)
result := transform.Rotate(img, -45.0, nil)
// If ResizeBounds is set to true, the full rotation bounding area is used
result := transform.Rotate(img, -45.0, &transform.RotationOptions{ResizeBounds: true})
// Pivot coordinates are set from the top-left corner
// Notice ResizeBounds being set to default (false)
result := transform.Rotate(img, -45.0, &transform.RotationOptions{Pivot: &image.Point{0, 0}})
result := transform.ShearH(img, 30)
result := transform.ShearV(img, 30)
result := transform.Translate(img, 80, 0)
Want to hack on the project? Any kind of contribution is welcome!
Simply follow the next steps:
In case you want to add a feature, please create a new issue and briefly explain what the feature would consist of. For bugs or requests, before creating an issue please check if one has already been created for it.
Please see the changelog for more details.
This project is licensed under the MIT license. Please read the LICENSE file.