Image processing with Go

All New

To compile the helper library in Listing 1, which is later needed by the main program in Listing 2, move it to the directory src/darkenthreshold under your Go path (usually ~/go) and run go install there.

To compile the main program, call go build thresmain.go, and the resulting binary thresmain will be writing any modified image file (e.g., portrait.jpg) to a new file with a name sporting an -s suffix, as in portrait-s.jpg. To rewrite the filename, Line 60 in Listing 2 extracts the .jpg extension from the name of the old file and then chops it off with TrimSuffix, before the Sprintf function then inserts a -s from the fmt package and puts the suffix back. The target file won't exist yet at this point, so the OpenFile() function in line 66 needs the read/write/create flags (os.O_RDWR and os.O_CREATE) to create a new file.

With jpeg.Encode() and a quality value of 80, Listing 2 encodes the modified data into JPG format and writes the result to the specified file (Figure 6). If you like, you can try other algorithms, such as the Flood Fill [3] method, which colorizes pixels that are similar in value. After all, the raw pixel data is at your fingertips, and there are no limits as to what you can accomplish with them!

Figure 6: With a suitable threshold value, the algorithm performs the task as expected.

The Author

Mike Schilli works as a software engineer in the San Francisco Bay area, California. Each month in his column, which has been running since 1997, he researches practical applications of various programming languages. If you email him at mailto:mschilli@perlmeister.com he will gladly answer any questions.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

  • Straight to the Point

    With the Fyne framework, Go offers an easy-to-use graphical interface for all popular platforms. As a sample application, Mike uses an algorithm to draw arrows onto images.

  • CLI Image Processing

    Powerful command-line tools offer fast and easy image editing.

  • Data Conversion

    Transcode is a handy tool for manipulating video files at the command line. With its modular architecture, the Transcode utility gives users much more than simple format conversion.

  • Perl: Automating Color Correction

    If you have grown tired of manually correcting color-casted images (as described in last month's Perl column), you might appreciate a script that automates this procedure.

  • Programming Snapshot – Facial Recognition

    It is not just Facebook – every Linux user can extract faces from photos and assign them to real people, thanks to free libraries. Mike Schilli shows you how to do it.

comments powered by Disqus

Direct Download

Read full article as PDF:

Price $2.95

News