Почему индексерра происходит, когда я пытаюсь использовать переменную, которая итерации для доступа к данным в массиве иPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему индексерра происходит, когда я пытаюсь использовать переменную, которая итерации для доступа к данным в массиве и

Сообщение Anonymous »

Я пытаюсь создать программу, которая обрабатывает скриншот в уменьшенное красное изображение только с тремя цветами. Я ожидал получить изображение, однако, я выполнил эту ошибку.for x in range(29):
for y in range(112):
if x and y == 0:
continue
duplicate = False
for z in range(colourFrequency.shape[0]):
if colourFrequency[z][2] = colourFrequency[z][3]:
duplicate = True
colourFrequency[z][1] += 1
break
if duplicate == False:
colourFrequency = np.append(colourFrequency, [image[x][y][2], 1, image[x][y][2], image[x][y][2]])
< /code>
Специально, эта строка. < /p>
if colourFrequency[z][2] = colourFrequency[z][3]:

Я уже искал Stackoverflow и нашел кого -то, у кого была похожая ошибка (как исправить индексерр: недопустимый индекс к скалярной переменной), однако я не смог реализовать предложения, найденные на этой странице, не нарушая код. /> Вот полный сценарий на всякий случай. Строки с 4 по 15 были проверены и работают правильно, однако я не смог проверить остальные, поэтому, вероятно, все еще есть некоторые проблемы. < /P>
import cv2
import numpy as np

#Crop and resize image

image = cv2.imread("sample.png",cv2.IMREAD_COLOR)
image = image[526:961, 0:1680]
image = cv2.resize(image, (112,29))

#Filter the B and G values from the image

for x in range(29):
for y in range(112):
image[x][y][0] = 0
image[x][y][1] = 0

#Create an array where information about each colour present in the image is stored

colourFrequency = np.array([[image[0][0][2], 1, image[0][0][2], image[0][0][2]]])

#Find and store each unique colour in the array

for x in range(29):
for y in range(112):
if x and y == 0:
continue
duplicate = False
for z in range(colourFrequency.shape[0]):
if colourFrequency[z][2] = colourFrequency[z][3]:
duplicate = True
colourFrequency[z][1] += 1
break
if duplicate == False:
colourFrequency = np.append(colourFrequency, [image[x][y][2], 1, image[x][y][2], image[x][y][2]])

#Sort the array according to how high the R value is

counterRed = 0

for x in range(256):
for y in range(colourFrequency.shape[0]):
if colourFrequency[y][0] == x:
np.insert(colourFrequency, counterRed, colourFrequency[int(y)])
np.delete(colourFrequency, y+1)
counterRed += 1
continue

#Simplifies the colours into 3 distinct colours based on how close it is in the R value and how common it is

counterPixel = 1

while colourFrequency.shape[0] > 3:
index = -1
for x in range(colourFrequency.shape[0]):
if colourFrequency[x][1] == counterPixel:
index = counterPixel

if index < 0:
counterPixel += 1
elif index == 0:
colourFrequency[index + 1][0] = round(((colourFrequency[index + 1][0] * colourFrequency[index + 1][1])+(colourFrequency[index][0] * colourFrequency[index][1])) / (colourFrequency[index + 1][1] + colourFrequency[index][1]))
colourFrequency[index + 1][1] = colourFrequency[index + 1][1] + colourFrequency[index][1]
colourFrequency[index + 1][2] = colourFrequency[index][2]
np.delete(colourFrequency, index)
elif index == 255:
colourFrequency[index - 1][0] = round(((colourFrequency[index - 1][0] * colourFrequency[index - 1][1])+(colourFrequency[index][0] * colourFrequency[index][1])) / (colourFrequency[index - 1][1] + colourFrequency[index][1]))
colourFrequency[index - 1][1] = colourFrequency[index - 1][1] + colourFrequency[index][1]
colourFrequency[index - 1][3] = colourFrequency[index][3]
np.delete(colourFrequency, index)
else:
diffBefore = (colourFrequency[index][1] - colourFrequency[index - 1][1])/(colourFrequency[index][0] - colourFrequency[index - 1][0])
diffAfter = (colourFrequency[index + 1][1] - colourFrequency[index][1])/(colourFrequency[index + 1][0] - colourFrequency[index][0])
if diffBefore > diffAfter:
colourFrequency[index - 1][0] = round(((colourFrequency[index - 1][0] * colourFrequency[index - 1][1])+(colourFrequency[index][0] * colourFrequency[index][1])) / (colourFrequency[index - 1][1] + colourFrequency[index][1]))
colourFrequency[index - 1][1] = colourFrequency[index - 1][1] + colourFrequency[index][1]
colourFrequency[index - 1][3] = colourFrequency[index][3]
else:
colourFrequency[index + 1][0] = round(((colourFrequency[index + 1][0] * colourFrequency[index + 1][1])+(colourFrequency[index][0] * colourFrequency[index][1])) / (colourFrequency[index + 1][1] + colourFrequency[index][1]))
colourFrequency[index + 1][1] = colourFrequency[index + 1][1] + colourFrequency[index][1]
colourFrequency[index + 1][2] = colourFrequency[index][2]
np.delete(colourFrequency, index)

#Substitutes each colour for its simplified equivalent

for x in range(29):
for y in range(112):
for z in range(colourFrequency.shape[0]):
if colourFrequency[z][2]

Подробнее здесь: https://stackoverflow.com/questions/795 ... g-iterated
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»