From 356b839c5f1ddfea0f0a380c6871b36bb1f7ec00 Mon Sep 17 00:00:00 2001 From: Nick White Date: Mon, 3 Aug 2020 16:36:57 +0100 Subject: Add some testable examples --- example_test.go | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ integralimg.go | 8 ------- 2 files changed, 73 insertions(+), 8 deletions(-) create mode 100644 example_test.go diff --git a/example_test.go b/example_test.go new file mode 100644 index 0000000..8958557 --- /dev/null +++ b/example_test.go @@ -0,0 +1,73 @@ +// Copyright 2020 Nick White. +// Use of this source code is governed by the GPLv3 +// license that can be found in the LICENSE file. + +package integralimg_test + +import ( + "fmt" + "image" + "image/draw" + _ "image/png" + "log" + "os" + + "rescribe.xyz/integralimg" +) + +func ExampleImage_Sum() { + f, err := os.Open("testdata/in.png") + if err != nil { + log.Fatal(err) + } + defer f.Close() + img, _, err := image.Decode(f) + if err != nil { + log.Fatal(err) + } + b := img.Bounds() + integral := integralimg.NewImage(b) + draw.Draw(integral, b, img, b.Min, draw.Src) + fmt.Printf("Sum: %d\n", integral.Sum(b)) + // Output: + // Sum: 601340165 +} + +func ExampleImage_Mean() { + f, err := os.Open("testdata/in.png") + if err != nil { + log.Fatal(err) + } + defer f.Close() + img, _, err := image.Decode(f) + if err != nil { + log.Fatal(err) + } + b := img.Bounds() + integral := integralimg.NewImage(b) + draw.Draw(integral, b, img, b.Min, draw.Src) + fmt.Printf("Mean: %f\n", integral.Mean(b)) + // Output: + // Mean: 54677.229042 +} + +func ExampleMeanStdDev() { + f, err := os.Open("testdata/in.png") + if err != nil { + log.Fatal(err) + } + defer f.Close() + img, _, err := image.Decode(f) + if err != nil { + log.Fatal(err) + } + b := img.Bounds() + integral := integralimg.NewImage(b) + sqIntegral := integralimg.NewSqImage(b) + draw.Draw(integral, b, img, b.Min, draw.Src) + draw.Draw(sqIntegral, b, img, b.Min, draw.Src) + mean, stddev := integralimg.MeanStdDev(*integral, *sqIntegral, b) + fmt.Printf("Mean: %f, Standard Deviation: %f\n", mean, stddev) + // Output: + // Mean: 54677.229042, Standard Deviation: 21643.721672 +} diff --git a/integralimg.go b/integralimg.go index 3585703..6cf3a25 100644 --- a/integralimg.go +++ b/integralimg.go @@ -7,14 +7,6 @@ // sum of pixels to the left and above each pixel, which can make // several common image processing operations much faster. // -// integralimg.Image and integralimg.SqImage fully implement the -// image.Image and image/draw.Draw interfaces, and hence can be -// used like so: -// -// img, _, err := image.Decode(f) -// integral := integralimg.NewImage(b) -// draw.Draw(integral, b, img, b.Min, draw.Src) -// // The Sum(), Mean() and MeanStdDev() functions provided for the // integral versions of Images significantly speed up many common // image processing operations. -- cgit v1.2.1-24-ge1ad