【发布时间】:2019-07-02 19:22:32
【问题描述】:
我对 python 和 Opencv 还很陌生,但我有一些来自 cv2 和随机的部分,用于一个简单的测试程序,以确保我了解这些库的工作原理。
我正在尝试创建一个能够有效生成彩色“雪”的程序,类似于老式电视在没有信号时显示的内容。
基本上,我使用 random.randint(-1,256) 生成一个随机颜色,以获得 0 到 255 之间的值。我做了 3 次并将每个颜色存储在不同的变量 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 中的宽度和高度变量定义的指定“框”内无限期地为像素随机颜色着色。
它似乎开始这样做了,但是如果程序运行超过一秒钟它就会崩溃并吐出这个错误
“IndexError:索引 702 超出轴 1 的范围,大小为 702”
【问题讨论】:
标签: python-3.x numpy opencv random