1 def kiir(ssz, szoveg): 2 print('{}. feladat - {}'.format(ssz, szoveg)) 3 4 5 # ----------------------------------------------------------------------------- 6 # 1. Olvassa be a fájlból egy megfelelő adatszerkezetbe az egyes képpontok 7 # RGB kódját! 8 # ----------------------------------------------------------------------------- 9 kiir(1, 'Adatok beolvasása') 10 11 # 50×50 képpontos kép képpontjainak RGB kódjai vannak sorfolytonosan 12 sor = [] # 50 3 elemű listát tartalmazó sor, a mátrix egy sora 13 matrix = [] # 50 sort tartalmazó mátrix (lsd egy sorral feljebb) 14 fbe = open('kep.txt', 'r') 15 db = 1 16 for pontok in fbe: 17 pontok = pontok.strip().split() 18 sor.append(pontok) 19 if db % 50 == 0: # 50-esével képezzük a sorokat 20 matrix.append(sor) 21 sor = [] # ha egy sor bekerült a mátrixba, kezdjük elölről 22 db += 1 23 24 N = db - 1 25 print('Beolvasott sorok száma: ', N) 26 fbe.close() 27 28 # ----------------------------------------------------------------------------- 29 # 2. Kérjen be a felhasználótól egy RGB kódot! Állapítsa meg a program 30 # segítségével, hogy a bekért szín megtalálható-e a képen! A megállapítás 31 # eredményét írja ki a képernyőre! 32 # ----------------------------------------------------------------------------- 33 kiir(2, 'Adott RGB kód szerepel-e a képben') 34 print('Kérek egy R G B értéket szóközökkel elválasztva!') 35 # RGB lista közvetlenül inputból 36 RGB = [kod for kod in input().split()] 37 RGB = RGB[0:3] # ha 3 elemnél többet írna be, csak 3-at veszünk 38 print(RGB) 39 # keresési algoritmus 40 i = 0 41 while i < 50: 42 j = 0 43 while j < 50 and matrix[i][j] != RGB: 44 j += 1 45 if j < 50: 46 print('A megadott kód szerepel a képben!') 47 break # ha megvan elhagyjuk a ciklust 48 i += 1 49 if i == 50: 50 print('A megadott kód nem szerepel a képben!') 51 52 # ----------------------------------------------------------------------------- 53 # 3. Határozza meg, hogy a kép 35. sor 8. képpontjának színe hányszor 54 # szerepel a 35. sorban, illetve a 8. oszlopban. Az értékeket írja ki a 55 # képernyőre az alábbi formában: Például: Sorban: 5 Oszlopban: 10 56 # ----------------------------------------------------------------------------- 57 kiir(3, '35.sor, 8.oszlop') 58 RGB = matrix[34][7] 59 print(RGB) 60 s_db = matrix[34].count(RGB) # 35. sorban a count-tal számolunk 61 o_db = 0 62 for s in range(50): # oszlopban számolás, azaz a sorokat futtajuk 1-50-ig 63 if matrix[s][7] == RGB: 64 o_db += 1 65 66 print('Sorban: {} Oszlopban: {}'.format(s_db, o_db)) 67 68 # ----------------------------------------------------------------------------- 69 # 4. Állapítsa meg, hogy a vörös, kék és zöld színek közül melyik szín 70 # fordul elő legtöbbször a képen! Az (egyik) legtöbbször előforduló szín 71 # nevét írja ki a képernyőre! 72 # A színek kódjai: Vörös 255,0,0 Zöld 0,255,0 Kék 0,0,255 73 # ----------------------------------------------------------------------------- 74 kiir(4, 'Legtöbbször előforduló szín') 75 RGB = [0] * 3 76 77 for i in range(50): 78 RGB[0] += matrix[i].count(['255', '0', '0']) # vörös 79 RGB[1] += matrix[i].count(['0', '255', '0']) # zöld 80 RGB[2] += matrix[i].count(['0', '0', '255']) # kék 81 RGB2 = ['vörös', 'zöld', 'kék'] 82 print('A leggyakoribb szín:', RGB2[RGB.index(max(RGB))]) 83 84 # ----------------------------------------------------------------------------- 85 # 5. Készítsen 3 képpont széles, fekete színű keretet a képnek! A keretet 86 # úgy hozza létre, hogy a kép mérete ne változzon! 87 # A fekete szín kódja RGB(0, 0, 0). 88 # ----------------------------------------------------------------------------- 89 kiir(5, 'Keretezés feketével') 90 91 for i in range(50): 92 for j in range(50): 93 if i < 3 or i > 46 or j < 3 or j > 46: 94 matrix[i][j] = ['0', '0', '0'] 95 96 # ----------------------------------------------------------------------------- 97 # 6. A kép képpontjainak színét írja ki a keretes.txt nevű szövegfájlba a 98 # bemeneti fájl formátumával egyezően! A képet sorfolytonosan tárolja, 99 # minden képpontot új sorba, a képpontok RGB kódját szóközzel elválasztva 100 # írja ki! 101 # ----------------------------------------------------------------------------- 102 kiir(6, 'Képpontok kiírása keretes.txt-be') 103 104 fki = open('keretes.txt', 'w') 105 for i in range(50): 106 for j in range(50): 107 print(' '.join(matrix[i][j]), file=fki) 108 fki.close() 109 110 # ----------------------------------------------------------------------------- 111 # 7. Az 50×50-es képen a kerettől függetlenül egy sárga RGB (255, 255, 0) 112 # színű téglalap van. Határozza meg a program segítségével a bal felső és 113 # a jobb alsó sárga képpontnak a helyét (sor, oszlop), majd határozza meg, 114 # hogy a sárga téglalap hány képpontból áll! A képpontok helyét és a sárga 115 # alakzat méretét a következő formában írassa ki a képernyőre: 116 # Kezd: sor, oszlop 117 # Vége: sor, oszlop 118 # Képpontok száma: darab 119 # ----------------------------------------------------------------------------- 120 kiir(7, 'Sárga téglalap') 121 122 S = ['255', '255', '0'] 123 db = 0 124 for i in range(50): 125 for j in range(50): 126 if matrix[i][j] == ['255', '255', '0'] and db == 0: 127 kezd = (i, j) # első találat a balfelső sarkot adja 128 if matrix[i][j] == ['255', '255', '0']: 129 vege = (i, j) # jobbalsó folyamatosan "frissül", amíg "vége" nem lesz 130 db += 1 # és számoljuk, hogy hány képpont sárga 131 132 print('Kezd: {}, {}'.format(kezd[0], kezd[1])) 133 print('Vége: {}, {}'.format(vege[0], vege[1])) 134 print('Képpontok száma: ', db)