You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

51 lines
1.3 KiB

package main
import (
"image"
_ "image/png"
"io/ioutil"
"os"
"strings"
)
type imgRGBA [][]int
type CollectionImgs []imgRGBA
type ExamplesImg map[string]CollectionImgs
func readImage(path string) imgRGBA {
//open image, and generate the histogram, made from r,g,b,a components
reader, err := os.Open(path)
check(err)
defer reader.Close()
m, _, err := image.Decode(reader)
check(err)
bounds := m.Bounds()
//generate the histogram
var histogram imgRGBA
for y := bounds.Min.Y; y < bounds.Max.Y; y++ {
for x := bounds.Min.X; x < bounds.Max.X; x++ {
r, g, b, a := m.At(x, y).RGBA()
var pixel []int
pixel = append(pixel, int(r), int(g), int(b), int(a))
histogram = append(histogram, pixel)
}
}
return histogram
}
func readExamples() map[string][]imgRGBA {
//var examplesImg ExamplesImg
examplesImg := make(map[string][]imgRGBA)
//for each image in the directory of example images, read the image and generate the histogram
files, _ := ioutil.ReadDir("./images/numbers/")
for _, f := range files {
//fmt.Println("images/numbers/" + f.Name())
file := readImage("images/numbers/" + f.Name())
numberName := strings.Split(f.Name(), ".")[0]
//fmt.Println(numberName)
examplesImg[numberName] = append(examplesImg[numberName], file)
}
return examplesImg
}