A soothing face filter where you can appreciate the beauty but not fully identify the person.

  the project to show your appreciation. ↗️

Showerglass

A soothing face filter where you can appreciate the beauty but not fully identify the person. Useful for social applications, blogging etc.

You can read how it works in this article.

Features

  1. Resizing (Caire, NearestNeighbor, ApproxBiLinear, BiLinear, CatmullRom)
  2. Automatic Face detection
  3. Frosted Showerglass filter (delaunay triangulation) over only face

female face

Image credit: https://unsplash.com/photos/tCJ44OIqceU

Installation

go get -u github.com/rocketlaunchr/showerglass/core
import "github.com/rocketlaunchr/showerglass/core"

Usage

import	("image/jpeg"; "os";)
import	"github.com/rocketlaunchr/showerglass/core"

f, _ := os.Open("face.jpg")
defer f.Close()

opts := showerglass.Options{
	NewHeight: 100.0,
	NewWidth:  100.0,
	ResizeAlg: showerglass.CatmullRom,
	TriangleConfig: func(QRank, facearea int, Q float32, h, w int, c showerglass.MaxPoints) *showerglass.TriangleConfig {
		if QRank < 1 {
			// only modify first detected face
			return &showerglass.TriangleConfig{
				MaxPoints:  1500,
				BlurRadius: 4,
				BlurFactor: 1,
				EdgeFactor: 6,
				PointRate:  0.075,
			}
		}
		return nil
	},
}

masked, _, _ := showerglass.FaceMask(f, opts)

out, _ := os.Create("masked.jpg")

jpeg.Encode(out, masked, &jpeg.Options{Quality: 100})

Calibration

  • A higher MaxPoints means the face looks closer to the original.
  • A lower MaxPoints (with the exception of 0) means a more obfuscated face.

Based on the facearea, you need to calibrate MaxPoints to achieve the desired feel.

Credits

  • Endre Simo - One of the masters of Image Processing [worth following]

Other useful packages

  • awesome-svelte - Resources for killing react
  • dataframe-go - Statistics and data manipulation
  • dbq - Zero boilerplate database operations for Go
  • electron-alert - SweetAlert2 for Electron Applications
  • google-search - Scrape google search results
  • igo - A Go transpiler with cool new syntax such as fordefer (defer for for-loops)
  • mysql-go - Properly cancel slow MySQL queries
  • react - Build front end applications using Go
  • remember-go - Cache slow database queries
  • testing-go - Testing framework for unit testing

Legal Information

The license is a modified MIT license. Refer to LICENSE file for more details.

© 2022 PJ Engineering and Business Solutions Pty. Ltd.

Similar Resources

A Go program that takes an image, uses pigo to detect a face, and creates a gif that zooms in on the face

A Go program that takes an image, uses pigo to detect a face, and creates a gif that zooms in on the face

ok-zoomer Every GIF is a gift. How it works face detection with esimov/pigo color quantization / dithering with esimov/colorquant image resizing with

Nov 27, 2022

Distributed lock manager. Warning: very hard to use it properly. Not because it's broken, but because distributed systems are hard. If in doubt, do not use this.

What Dlock is a distributed lock manager [1]. It is designed after flock utility but for multiple machines. When client disconnects, all his locks are

Dec 24, 2019

Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI.💅🏻

Glow is a terminal based markdown reader designed from the ground up to bring out the beauty—and power—of the CLI.💅🏻

Glow Render markdown on the CLI, with pizzazz! What is it? Glow is a terminal based markdown reader designed from the ground up to bring out the beaut

Nov 28, 2022

wholeaked is a file-sharing tool that allows you to find the responsible person in case of a leakage

wholeaked is a file-sharing tool that allows you to find the responsible person in case of a leakage

wholeaked is a file-sharing tool that allows you to find the responsible person in case of a leakage

Nov 30, 2022

Squizit is a simple tool, that aim to help you get the grade you want, not the one you have learnt for.

Squizit is a simple tool, that aim to help you get the grade you want, not the one you have learnt for.

Squizit is a simple tool, that aim to help you get the grade you want, not the one you have learnt for. Screenshots First, input PIN Then enjoy! Hoste

Mar 11, 2022

HTTP proxy written in Go. COW can automatically identify blocked sites and use parent proxies to access.

COW (Climb Over the Wall) proxy COW 是一个简化穿墙的 HTTP 代理服务器。它能自动检测被墙网站,仅对这些网站使用二级代理。 English README. 当前版本:0.9.8 CHANGELOG 欢迎在 develop branch 进行开发并发送 pull

Nov 28, 2022

Caddy log filter module with a log field filter to extract the user from a basic Authorization HTTP-Header

caddy-basic-auth-filter This packages contains a log field filter to extract the user from a basic Authorization HTTP-Header. Installation xcaddy buil

May 10, 2022

Simple filter query language parser so that you can build SQL, Elasticsearch, etc. queries safely from user input.

fexpr fexpr is a filter query language parser that generates extremely easy to work with AST structure so that you can create safely SQL, Elasticsearc

Nov 20, 2022

Help my family picking secret santas without having a person beeing involved

secret-santa This is a small project I wrote to help my family picking secret santas without having a person beeing involved. This way noone is left o

Nov 6, 2021

QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file

QueryCSV enables you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to a CSV file

QueryCSV enable you to load CSV files and manipulate them using SQL queries then after you finish you can export the new values to CSV file

Dec 22, 2021

Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go.

Fast face detection, pupil/eyes localization and facial landmark points detection library in pure Go.

Pigo is a pure Go face detection, pupil/eyes localization and facial landmark points detection library based on Pixel Intensity Comparison-based Objec

Dec 3, 2022

(Golang) Go bindings for the Hugging Face Inference API

hfapigo (Golang) Go bindings for the Hugging Face Inference API. Directly call any model available in the Model Hub. An API key is required for author

Nov 18, 2022

face detction/recognization golang lib using tensorflow facenet

face detction/recognization golang lib using tensorflow facenet

Golang lib for detect/recognize by tensorflow facenet Prerequest libtensorfow 1.x Follow the instruction Install TensorFlow for C facenet tenorflow sa

Sep 23, 2022

GoTemplates - A Repository to store many go templates i will face in the future

Go Templates A Repository to store many go templates i will face in the future.

Jan 8, 2022

Lightweight but fully-capable WebTransport server for Go

webtransport-go This package provides a lightweight WebTransport-over-HTTP/3 server implementation in Go. What is WebTransport? WebTransport (https://

Nov 25, 2022

WebDAV server for SSH. Similar to sshfs but does not require proprietary MacFUSE on macOS

sshwebdav: WebDAV server for SSH sshwebdav provides a WebDAV server for a remote SSH host. sshwebdav is similar to sshfs but does not require propriet

Nov 9, 2022

its a simple backdoor service that im making cuz i think that it could be cool its not finished but this is a cool project

  its a simple backdoor service that im making cuz i think that it could be cool its not finished but this is a cool project

yackdoor its a simple backdoor service that im making cuz i think that it could be cool its not finished but this is a cool project how it looks backd

Aug 18, 2022

Formrecevr is a simple and lightweight from receiver backend primarily designed for (but not limited to) static websites.

Formrecevr Formrecevr (pronunced "Form receiver") is a simple and lightweight from receiver backend primarily designed for (but not limited to) static

Apr 17, 2022

A virtual file system for small to medium sized datasets (MB or GB, not TB or PB). Like Docker, but for data.

AetherFS assists in the production, distribution, and replication of embedded databases and in-memory datasets. You can think of it like Docker, but f

Feb 9, 2022
Comments
  • upgraded to triangle/v2

    upgraded to triangle/v2

    With triangle/v2 you need to include some additional parameters into the Processor struct and it should work. The Processor struct initialization should look something like this:

    return &showerglass.Processor{
    	MaxPoints:  1500,
    	BlurRadius: 4,
    	BlurFactor: 1,
    	EdgeFactor: 6,
    	PointRate:  0.075,
    }
    

    I have deleted also the go.mod from the core folder, it's not really needed.

This is old and unmaintained code, ignore it. starfish is a simple, SDL based, 2D graphics and user input library for Go. If you intend to work on it, please fork from the 'devel' branch, not 'master'. Current release: 0.12.0

What is starfish? What starfish is: starfish is a simple 2D graphics and user input library for Go built on SDL. What starfish is not: While it is bui

Jun 4, 2019
A note taking app, that you can draw in, syncs to the cloud, and is on most platforms!

About NoteDraw About · How to contribute · How to run Structure Codebase Description SRC The sorce code for the client side (Go) Branches Only Ones th

Jul 11, 2022
Radius parsing in golang using gopacket. You can parse from either live traffic or from pcap of your choice.

go-radius Radius parsing in golang using gopacket. You can parse from either live traffic or from pcap of your choice. RADIUS RADIUS is an AAA (authen

Dec 27, 2021
simple but poweful mosaic picture generator
simple but poweful mosaic picture generator

MOSAIC MAN simple but poweful mosaic picture generator it's completely free with a highly customizable mosaic server RESULT Ex1 RESULT Ex2 OPTIONS til

Jul 18, 2022
🌈 Like lolcat but with more Rainbows and Unicorns!
🌈 Like lolcat but with more Rainbows and Unicorns!

Chigo Screenshot Installation go install github.com/UltiRequiem/[email protected] Or use a binary from releases. License This project is licensed under the

Jul 16, 2022
Rasterx is an SVG 2.0 path compliant rasterizer that can use either the golang vector or a derivative of the freetype anti-aliaser.
Rasterx is an SVG 2.0 path compliant rasterizer that can use either the golang vector or a derivative of the freetype anti-aliaser.

rasterx Rasterx is a golang rasterizer that implements path stroking functions capable of SVG 2.0 compliant 'arc' joins and explicit loop closing. Pat

Nov 1, 2022
code2img can generate image of source code
code2img can generate image of source code

code2img code2img can generate image of source code. This was inspired by carbon and silicon Features Doesn't need browser & Internet Copy image of so

Nov 15, 2022
Find out where you fall on the Open-Source Character Alignment Chart

gitaligned Find out where you fall on the Open-Source Character Alignment Chart Binaries available in releases. If you prefer to install from source,

Nov 2, 2022
An API which allows you to upload an image and responds with the same image, stripped of EXIF data

strip-metadata This is an API which allows you to upload an image and responds with the same image, stripped of EXIF data. How to run You need to have

Nov 25, 2021
Person is a simple CRUD application written in go which exposes API endpoint to create the person.

Person Person is a simple CRUD application written in go which exposes API endpoint to create the person. Installation Install docker in your local sy

Oct 18, 2021