arnaucube
arnaucube/galdricPublic Self-hosted repository
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}