У меня есть текстовый файл, содержащий информацию как таковую:
RGB
768
768
08 87 68
118 101 83
110 92 72
114 96 76
115 97 77
Первые два числа - это ширина и высота исходного текстового файла, и он очень большой. Мне нужно прочитать информацию, а затем преобразовать ее в изображение в оттенках серого, используя три разные формулы. У меня уже есть первая формула в моем коде:
gray = (red + green + blue) / 3
Но теперь я не уверен, как на самом деле анализировать каждый пиксель, читая каждую строку и каждое число в каждой строке. Я еще не знаком с python, поэтому понимаю основные функции c, но не обязательно синтаксис и все остальное.
Я пишу его в новый текстовый файл в том же формате, только что преобразованный в оттенки серого, поэтому:
RGB
768
768
54 54 54
100 100 100
91 91 91
95 95 95
96 96 96
with open('1.txt', 'r') as input_file:
content_list = input_file.readlines()
width = 768
height = int(len(content_list) / width)
listRGBs = []
with open('fsanche4_1.txt', 'w') as out_file:
i = 0
j = 0
print(f"{int(height)}")
out_file.write(f"RGB\n")
out_file.write(f"{height}\n")
out_file.write(f"{width}\n")
for i in range(0, height, 1):
#row = listRBGs[i]
for row in listRGBS:
for j in range(0, width, 1):
blue = row[j]
red = row[j + 1]
green = row[j + 2]
gray = (red + green + blue) / 3
out_file.writelines(f"{gray} {gray} {gray}\n")
Новый код, который я написал, компилируется и создает новый файл, но в моем новом текстовом файле ничего не отображается, только первые три строки, а остальные пустые
RGB
768
768
Вот новый код, который у меня есть:
with open('1.txt', 'r') as input_file:
line = input_file.readlines()
width = 768
height = 768
with open('fsanche4_1.txt', 'w') as out_file:
i = 0
j = 0
print(f"{int(height)}")
out_file.write(f"RGB\n")
out_file.write(f"{height}\n")
out_file.write(f"{width}\n")
for line in input_file:
blue, red, green = line.split()
gray = (int(red) + int(green) + int(blue)) / 3
out_file.write(f"{gray} {gray} {gray}\n")
line = input_file.readlines()