galdric/readDataset.go
readDataset.goRaw
1package main
2
3import (
4 "fmt"
5 "io/ioutil"
6 "strconv"
7)
8
9//each image is [][]float64, is a array of pixels
10type ImgDataset [][][]float64
11
12type Dataset map[string]ImgDataset
13
14func byteArrayToFloat64Array(b []byte) []float64 {
15 var f []float64
16 for i := 0; i < len(b); i++ {
17 val, _ := strconv.ParseFloat(string(b[i]), 64)
18 /*fmt.Print(string(b[i]) + "-")
19 fmt.Println(val)*/
20 f = append(f, val)
21 }
22 return f
23}
24
25func readImage(path string) [][]float64 {
26 //open image file
27 /*reader, err := os.Open(path)
28 check(err)
29 defer reader.Close()*/
30
31 dat, err := ioutil.ReadFile(path)
32 check(err)
33
34 imageRaw, err := dataToImage(dat, path)
35 check(err)
36
37 //resize the image to standard size
38 image := Resize(imageRaw)
39
40 //convert the image to histogram(RGBA)
41 histogram := imageToHistogram(image)
42 //convert image to bytes
43 /*imgBytes, err := imageToData(image, path)
44 check(err)*/
45
46 //imgFloat := byteArrayToFloat64Array(imgBytes)
47 return histogram
48}
49func readDataset(path string) map[string]ImgDataset {
50 //dataset := make(map[string]ImgDataset)
51 dataset := make(Dataset)
52
53 folders, _ := ioutil.ReadDir(path)
54 for _, folder := range folders {
55 fmt.Println(folder.Name())
56
57 var imgDataset ImgDataset
58
59 folderFiles, _ := ioutil.ReadDir(path + "/" + folder.Name())
60 for _, file := range folderFiles {
61 image := readImage(path + "/" + folder.Name() + "/" + file.Name())
62
63 imgDataset = append(imgDataset, image)
64
65 /*fmt.Println(folder.Name())
66 fmt.Println(file.Name())*/
67 }
68
69 //add the foldername to the Dataset map
70 dataset[folder.Name()] = imgDataset
71 }
72
73 return dataset
74}