Я довольно новичок в python и Opencv, но у меня есть несколько примеров из cv2 и случайных мыслей для простой тестовой программы, чтобы убедиться, что я понимаю, как работают эти библиотеки.
Я пытаюсь создать программу, которая эффективно генерирует цветной «снег», аналогичный тому, что показывает старомодный телевизор, когда на нем нет сигнала.
В основном я генерирую случайный цвет с помощью random.randint (-1,256), чтобы получить значение от 0 до 255. Я делаю это три раза и сохраняю каждый в своей переменной randB / G / R. Затем я делаю это в два раза больше для координат randX / Y, используя img.shape, чтобы получить переменные для ширины и высоты для максимального числа.
Я не думаю, что мои переменные интерпретируются как строки. Если я быстро разорву цикл и выведу переменные, ошибок не будет. Если я удалю переменные randX и randY и укажу фиксированные координаты или диапазон [X1: Y1, X2: Y2], это не приведет к сбою.
import cv2
import numpy as np
import random
img = cv2.imread('jake_twitch.png', cv2.IMREAD_COLOR)
height, width, channels = img.shape
while True:
randB = (random.randint(-1,256))
randG = (random.randint(-1,256))
randR = (random.randint(0,256))
randX = (random.randint(0,width))
randY = (random.randint(0,height))
img[randX,randY] = [randB,randG,randR]
cv2.imshow('Snow', img)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.imwrite('Snow.png', img)
cv2.destroyAllWindows
Я ожидал бы, что мой код будет выполнять неопределенную окраску пикселей случайными цветами в пределах указанного "блока", определенного переменными ширины и высоты из img.shape.
похоже, он начинает это делать, но если программа работает дольше секунды, она вылетает и выдает эту ошибку
"Ошибка IndexE: индекс 702 выходит за границы оси 1 с размером 702"