|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
2.11.2020, 22:24 | #1 |
Novi član
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Python, fajlovi 2
Ponovo sam zapeo kod fajlova. Imam folder sa slikama i želim da ih pretvorim u txt. fajl, da snimim nizove (redove) piksela. Problem je u tome što ovaj kod otvara samo jednu fotografiju, tj. samo jednu fotografiju transformiše u niz i upisuje u fajl. Molim nekoga za pomoć.
Kod:
for image_path in glob.glob("slike\\*.png"): img = imageio.imread(image_path) print(img.size) print(img) np.savetxt("papers\\pixel_data1.txt", img, fmt='%d', delimiter=" ") |
2.11.2020, 23:25 | #2 |
Starosedelac
Član od: 9.7.2010.
Lokacija: N/A
Poruke: 1.795
Zahvalnice: 750
Zahvaljeno 536 puta na 369 poruka
|
Re: Python, fajlovi 2
Kod:
import os . . . for image_path in glob.glob("slike\\*.png"): img = imageio.imread(image_path) print(img.size) print(img) np.savetxt("papers\\" + os.path.splitext(os.path.basename(image_path))[0] + ".txt", img, fmt='%d', delimiter=" ") Druga opcija, verovatno bolje je da koristis pathlib. |
3.11.2020, 17:50 | #3 |
Novi član
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Re: Python, fajlovi 2
Sa ovim dodatkom ništa se nije promenilo. Napiši ostale dve varijante ako ti nije problem.
|
3.11.2020, 19:51 | #4 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: Python, fajlovi 2
Sledeći, nešto modifikovani kod, učitava slike iz slike foldera i snima rezultate obrade u papers folder, svaki sa imenom u obliku pixel_data_NAZIV_FAJLA.txt.
BITNO: pretpostavlja se da u folderu slike nema dodatnih foldera tj. da su sve slike smeštene u jednom nivou. Kod:
import os import imageio as imageio import numpy as np # List files in a specified folder. dirs = os.listdir('./slike') # Create the results (papers) folder. if not os.path.exists('papers'): os.makedirs('papers') # Iterate over loaded files, convert them to ndarrays and export to files. for file in dirs: if file.endswith('.png'): img = imageio.imread(os.path.abspath(os.path.join('./slike', file))) path = os.path.abspath(os.path.join('.', './papers', 'pixel_data_' + file.replace('.png', '.txt'))) np.savetxt(path, img, fmt='%d') Daleko sigurnije je koristiti os.listdir() ili čak os.walk() a zatim rezultate filtrirati sa endswith(). Druga, daleko bitnija napomena. Dok imageio.imread() učitava sliku i vraća je u obliku NumPy niza (ndarray), numpy.savetxt() metoda nije sposobna da te podatke snimi u fajl ukoliko izvor ima više od dve dimenzije. To znači da izvorne slike mogu u najkomplikovanijem slučaju da budu 8-bitne grayscale slike zato što ndarray elementi onda mogu da se predstave u dve dimenzije kao (n, n) gde je svaki n u rasponu od 0 do 255 (8 bita). RBG slike već zahtevaju da se predstave kao trodimenzionalni tenzor (n, n, 3) jer treća komponenta sadrži tri boje (Red, Green i Blue) pa kao takve ne mogu da se snime u fajl osim ako se pre toga ne preoblikuju sa numpy.reshape() što je već tehnika koja debelo zalazi u machine learning teoriju |
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci: | ||
voodoo_ (4.11.2020) |
4.11.2020, 12:18 | #5 |
Novi član
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Re: Python, fajlovi 2
Hvala Luka, hvala Neutrinu,
program radi, ali meni je potreban jedan txt fajl, dakle, slike treba upisati sukcesivno u jedan fajl da bi se posle analizirao red po red vrednosti piksela. Probao sam da modifikujem tvoj kod ali nisam došao do rezultata. |
4.11.2020, 15:40 | #6 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: Python, fajlovi 2
Kao prvo, spajanje sačuvanih ndarray nizova u jedan fajl nema apsolutno nikakvog smisla jer se onda gubi informacija o pojedinačnim nizovima.
Međutim, ako baš insistiraš da spojiš rezultate u jedan fajl... Kod:
import os from typing import List import imageio as imageio import numpy as np # List files in a specified folder. dirs = os.listdir('./slike') # Create the results (papers) folder. if not os.path.exists('papers'): os.makedirs('papers') # Iterate over loaded files, convert them to ndarrays and export to files. for file in dirs: if file.endswith('.png'): img = imageio.imread(os.path.abspath(os.path.join('./slike', file))) path = os.path.abspath(os.path.join('.', './papers', 'pixel_data_' + file.replace('.png', '.txt'))) np.savetxt(path, img, fmt='%d') # Join generated files. results = os.listdir('./papers') with open('pixel_data_complete.txt', 'w') as target: for file in results: with open(os.path.abspath(os.path.join('./papers', file))) as source: target.write(source.read()) Kod:
cat ./papers/*.txt > pixel_data_complete.txt Poslednja ispravka: Neutrino (4.11.2020 u 15:53) |
4.11.2020, 19:06 | #7 |
Novi član
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Re: Python, fajlovi 2
Rezultati se nisu spojili. Dobio sam grešku:
=== RESTART: C:/Users/Zlatko/AppData/Local/Programs/Python/Python38-32/20.py === Traceback (most recent call last): File "C:/Users/Zlatko/AppData/Local/Programs/Python/Python38-32/20.py", line 27, in <module> target.write(source.read()) File "C:\Users\Zlatko\AppData\Local\Programs\Python\Pyt hon38-32\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_t able)[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 60: character maps to <undefined> |
4.11.2020, 19:31 | #8 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: Python, fajlovi 2
Dodaj na kraju svake open() funkcije kao named argument jedno:
Kod:
encoding="utf8" |
4.11.2020, 22:53 | #9 |
Novi član
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Re: Python, fajlovi 2
Evo ovako treba da izgleda u fajlu kada se spoje 4 zapisa/slike, npr. četiri male mnist slike. Napiši, molim te, gde da stavim encoding="utf8", ništa mi više nije jasno
Kod:
[[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] ................... 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 64 128 191 255 255 128 128 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]] [[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 104 253 253 253 255 127 121 19 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 85 205 248 252 252 252 253 252 252 242 107 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 73 247 252 252 192 151 26 90 198 252 252 210 74 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 80 225 252 252 176 15 0 0 0 17 158 240 252 244 67 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 199 252 252 174 17 0 0 0 0 0 0 178 252 252 115 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 226 252 202 17 0 0 0 0 0 0 0 81 252 252 241 69 0 0 0 0 0] [ 0 0 0 0 0 0 0 226 252 185 0 0 0 0 0 0 0 86 198 252 252 252 183 0 0 0 0 0] [ 0 0 0 0 0 0 0 226 252 192 27 9 17 27 27 27 153 243 252 252 252 252 225 0 0 0 0 0] [ 0 0 0 0 0 0 0 226 252 252 252 179 213 252 252 253 252 252 252 245 252 252 225 0 0 0 0 0] [ 0 0 0 0 0 0 0 156 252 252 252 252 252 252 252 253 252 252 139 92 252 252 225 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 114 165 253 253 253 253 253 134 77 0 0 68 253 253 226 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 4 13 13 13 13 13 0 0 0 0 67 252 252 225 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 186 252 252 176 0 0 0 0 0] [ 0 0 0 0 0 0 0 30 81 59 0 0 0 0 0 0 0 0 180 244 252 239 63 0 0 0 0 0] [ 0 0 0 0 0 0 0 128 252 238 52 0 0 0 0 0 0 110 244 252 252 107 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 226 252 252 66 0 0 0 0 0 108 245 252 252 184 21 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 135 252 252 87 0 0 24 41 174 248 252 252 185 21 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 35 213 252 232 160 160 213 252 253 252 242 113 20 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 76 249 252 252 252 252 252 253 183 67 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 95 217 252 252 252 252 120 6 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0] [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]]] Poslednja ispravka: Andross (5.11.2020 u 15:31) |
4.11.2020, 23:14 | #10 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: Python, fajlovi 2
Bez uvrede ali slabo tebi ide ovo programiranje
Kako očekuješ da radiš numeričku analizu u Pythonu kada bukvalno ne znaš ni osnove jezika? Nije mi problem da pomognem ali za uzvrat očekujem bar neki minimum želje za učenjem i inicijative. U svom prethodnom postu sam lepo napisao, "dodati na kraj svake open() funkcije named argument" Kod:
encoding="utf8" |
8.11.2020, 21:53 | #11 |
Novi član
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
|
Re: Python, fajlovi 2
Nije problem u encoding="utf-8", napravio sam jos jednu fasciklu u koju sam smestio rezultate i sada program radi kako sam zamislio. Hvala na pomoci.
Kod:
# Join generated files. results = os.listdir('papers\\papers1') with open('papers\\pixel_data_complete.txt', 'w') as target: for file in results: with open(os.path.abspath(os.path.join('papers\\papers1', file))) as source: target.write(source.read()) |
13.11.2020, 20:30 | #12 |
Član
Član od: 12.1.2007.
Lokacija: КиМ
Poruke: 285
Zahvalnice: 261
Zahvaljeno 73 puta na 48 poruka
|
Re: Python, fajlovi 2
Људи, јел може помоћ? Имајте на уму да сам апсолутни почетник! Имам задатак да урадим и никако ми не иде у главу...такође, свега неколико предавања сам имао и убија ме што још увек не могу да ухватим логику...Елем, задатак је следећи:
Dat je string oblika "3,9,13,4,42". Potrebno je pretvoriti ga u listu i za svaki element izračunati njegov kvadrat. Potom kvadrate tih elemenata spojiti nazad u string i ispisati u konzoli. Ulaz: string = "3,9,13,4,42" Izlaz: string= "9,81,169,16,1764" Свака помоћ ће бити и више него добродошла. Хвала унапред... |
13.11.2020, 20:51 | #13 |
Deo inventara foruma
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
|
Re: Python, fajlovi 2
Stavke koje ti trebaju: split(), for(), str(), pow(), int(), print() i join().
|
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Python, fajlovi | Zlatko P. | Programiranje | 2 | 12.10.2020 17:13 |
seckaju mp4 video fajlovi 1080p x265 (akcenat na x265) | akobasmora | Video/TV softver | 13 | 26.6.2017 21:06 |
kako dodeliti domen i kako povezati python app sa apache? | predic | Programiranje | 9 | 3.9.2015 16:52 |
Python 2, ili 3 | Krilce | Programiranje | 5 | 26.8.2013 16:50 |
Sta znace fajlovi sa NFO ekstenzijom i cemu sluze? | Ilic Marko | Aplikativni softver | 7 | 18.12.2005 0:54 |