Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 2.11.2020, 22:24   #1
Zlatko P.
Novi član
 
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom 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=" ")
Zlatko P. je offline   Odgovor sa citatom ove poruke
Stara 2.11.2020, 23:25   #2
Luka Filipovic
Starosedelac
 
Član od: 9.7.2010.
Lokacija: N/A
Poruke: 1.795
Zahvalnice: 750
Zahvaljeno 536 puta na 369 poruka
Određen forumom 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=" ")
Nisam sugran da li os.path moze da se sabira sa stringom, ako ne moze kastuj u string pomocu str().
Druga opcija, verovatno bolje je da koristis pathlib.
Luka Filipovic je offline   Odgovor sa citatom ove poruke
Stara 3.11.2020, 17:50   #3
Zlatko P.
Novi član
 
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom Re: Python, fajlovi 2

Sa ovim dodatkom ništa se nije promenilo. Napiši ostale dve varijante ako ti nije problem.
Zlatko P. je offline   Odgovor sa citatom ove poruke
Stara 3.11.2020, 19:51   #4
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom 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')
Kao prvo, glob() možda deluje lakše za korišćenje ali njegova rekurzivna priroda, plus neka ograničenja koja ima u odnosu na pravi UNIX glob (Python zapravo koristi običan fnmatch() regex mehanizam za svoj glob()) mogu da naprave više problema nego koristi.

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
Neutrino je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku Neutrino na korisnoj poruci:
voodoo_ (4.11.2020)
Stara 4.11.2020, 12:18   #5
Zlatko P.
Novi član
 
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom 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.
Zlatko P. je offline   Odgovor sa citatom ove poruke
Stara 4.11.2020, 15:40   #6
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom 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())
Ako koristiš UNIX, Linux ili WSL onda možeš spajanje da odradiš i u konzoli.

Kod:
cat ./papers/*.txt > pixel_data_complete.txt

Poslednja ispravka: Neutrino (4.11.2020 u 15:53)
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 4.11.2020, 19:06   #7
Zlatko P.
Novi član
 
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom 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>
Zlatko P. je offline   Odgovor sa citatom ove poruke
Stara 4.11.2020, 19:31   #8
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Python, fajlovi 2

Dodaj na kraju svake open() funkcije kao named argument jedno:
Kod:
encoding="utf8"
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 4.11.2020, 22:53   #9
Zlatko P.
Novi član
 
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom 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)
Zlatko P. je offline   Odgovor sa citatom ove poruke
Stara 4.11.2020, 23:14   #10
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom 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"
To je i više nego dovoljno bilo kome ko je ikada napisao jednu liniju koda, bez obzira na jezik, da zna šta treba da uradi.
Neutrino je offline   Odgovor sa citatom ove poruke
Stara 8.11.2020, 21:53   #11
Zlatko P.
Novi član
 
Član od: 17.4.2019.
Poruke: 21
Zahvalnice: 0
Zahvaljeno 0 puta na 0 poruka
Određen forumom 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())
Zlatko P. je offline   Odgovor sa citatom ove poruke
Stara 13.11.2020, 20:30   #12
Ziginho
Član
 
Član od: 12.1.2007.
Lokacija: КиМ
Poruke: 285
Zahvalnice: 260
Zahvaljeno 73 puta na 48 poruka
Određen forumom 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"

Свака помоћ ће бити и више него добродошла. Хвала унапред...
Ziginho je offline   Odgovor sa citatom ove poruke
Stara 13.11.2020, 20:51   #13
Neutrino
Deo inventara foruma
 
Član od: 17.6.2011.
Poruke: 7.336
Zahvalnice: 94
Zahvaljeno 3.334 puta na 2.010 poruka
Određen forumom Re: Python, fajlovi 2

Stavke koje ti trebaju: split(), for(), str(), pow(), int(), print() i join().
Neutrino je offline   Odgovor sa citatom ove poruke
Sledećih 2 korisnika se zahvaljuje korisniku Neutrino na korisnoj poruci:
NIx Car (14.11.2020), Ziginho (13.11.2020)
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


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


Sva vremena su po Griniču +2 h. Sada je 2:39.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2024, vBulletin Solutions, Inc.
Hosted by Beograd.com