photostates = [State() for i in range(10)]
sequence = [1, 2, 7, 9, 10] # отсчёт состояний с 1. Можно переделать на отсчёт с 0.
def get_next_state(current_state: int) -> State:
try: # определяем где мы в последовательности
idx = sequence.index(current_state)
if idx == len(sequence) - 1:
idx = -1 # в начало
raise ValueError: # нас там нет, этот шаг должен быть пропущен
idx = -1
return photostates[sequence[idx+1] - 1] # если отсчёт номеров состояний с 0, то - 1 нужно убрать.
try:
if '/dp/' in message.text:
product_id = message.text.split('/')[4]
else:
product_id = message.text.split('/')[-1]
answer = requests.get(f'API{product_id}')
except Exception:
bot.send_message(message.chat.id, 'Product not Evaluated yet.')
import numpy as np
arr = bgr
# Выстраиваем пиксели в ряд.
arr = arr.reshape(-1, arr.shape[-1])
# Сортируем по "возрастанию" цвета, чтобы одинаковые пиксели шли подряд
sorted_arr = arr[np.lexsort(arr.T), :]
# Используем разницу между соседями, чтобы понять, где заканчивается "цепочка" одинаковых пикселей
diff_idx = np.where(np.any(np.diff(sorted_arr, axis=0), 1))[0]
# Получаем набор уникальных пикселей
unique_rows = [sorted_arr[i] for i in diff_idx] + [sorted_arr[-1]]
# считаем, сколько раз встретился каждый уникальный пиксель
counts = np.diff(
np.append(np.insert(diff_idx, 0, -1), sorted_arr.shape[0] - 1))
# строим словарь вида "кортеж с цветом - количество".
counter = dict(zip(map(tuple, unique_rows), counts))
У тебя в else прописывается (зачем?!) обработчик события, и больше ничего не происходит.