https://github.com/fwessels/go-cv
Computer Vision package in pure Go taking advantage of SIMD acceleration
https://github.com/fwessels/go-cv
golang image-processing opencv simd visualization
Last synced: about 1 year ago
JSON representation
Computer Vision package in pure Go taking advantage of SIMD acceleration
- Host: GitHub
- URL: https://github.com/fwessels/go-cv
- Owner: fwessels
- License: apache-2.0
- Created: 2017-04-19T01:20:00.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-09-16T14:41:39.000Z (almost 8 years ago)
- Last Synced: 2025-04-02T00:38:30.049Z (about 1 year ago)
- Topics: golang, image-processing, opencv, simd, visualization
- Language: Go
- Homepage:
- Size: 113 KB
- Stars: 85
- Watchers: 6
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-cv
go-cv is a computer vision and image processing library for Go using Golang assembly. It is a works-in-progress wrapper around the [Simd](https://github.com/ermig1979/Simd) library. For now most work has been done on the SSE2 version.
## SIMD
The [Simd](https://github.com/ermig1979/Simd) Library is a highly optimized image processing library. It provides many useful high performance algorithms for image processing such as:
- pixel format conversion
- image scaling and filtration
- extraction of statistic information from images
- motion detection
- object detection (HAAR and LBP classifier cascades)
- classification
- neural network
The algorithms are optimized using different SIMD CPU extensions. In particular the library supports following CPU extensions:
- x86/x64: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2
- ARM: NEON
## Installation
```
$ go get -u "github.com/fwessels/go-cv"
```
## Samples
See the `samples` directory for various sample algorithms. For example:
```
$ cd samples
$ go run filtering.go
```
## Performance compared to OpenCV 2.x
A comparison against [go-opencv](https://github.com/lazywei/go-opencv) shows the following results:
```
OpenCV SSE2
benchmark old ns/op new ns/op delta
BenchmarkGaussian-8 74338 18481 -75.14%
BenchmarkGaussianRGB-8 186024 57169 -69.27%
BenchmarkBlur-8 110155 16623 -84.91%
BenchmarkBlurRGB-8 293017 53716 -81.67%
BenchmarkMedian3x3-8 129268 23270 -82.00%
BenchmarkMedian3x3RGB-8 169857 65896 -61.21%
BenchmarkMedian5x5-8 883311 131812 -85.08%
BenchmarkMedian5x5RGB-8 1246845 388415 -68.85%
```
## go-cv
See the underlying package [go-cv](https://github.com/fwessels/go-cv/) for more information.
## License
go-cv is released under the Apache License v2.0. You can find the complete text in the file LICENSE.