IndexError: list index out of range showPicture(sys.argv[1], strip)
IndexError: list index out of range showPicture(sys.argv[1], strip)
我遇到了 python 脚本的问题。
我们想做光绘,除了剧本,其他都行。
总是有那个错误。这是代码的最后一行。没有那条线什么也不会发生。这是错误:
File "showImage.py", line 49, in <module>
showPicture(sys.argv[1], strip)
IndexError: list index out of range
代码如下:
import time
from neopixel import *
from PIL import Image
import sys
# see also https://learn.adafruit.com/neopixels-on-raspberry-pi/overview
# LED strip configuration:
LED_COUNT = 50 # Number of LED pix.
LED_PIN = 18 # GPIO pin connected to the pix (must support PWM!).
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
LED_DMA = 5 # DMA channel to use for generating signal (try 5)
LED_INVERT = False # True to invert the signal (when using NPN transistor
level shift)
# method to blank all LEDs
def blankLine():
for x in range(LED_COUNT):
strip.setPixelColorRGB(x, 0,0,0)
strip.show()
# method to resize picture and show in column per column on the led strip
def showPicture(filename, strip):
blankLine()
# open file
img = Image.open(filename).convert("RGB")
# resize file
newWidth = float(img.size[0])/float(img.size[1])*LED_COUNT
img = img.resize( (int(newWidth), LED_COUNT))
width = img.size[0]
height = img.size[1]
pix = img.load()
for x in range(width):
for y in range(height):
strip.setPixelColorRGB(y, pix[x,y][0], pix[x,y][1], pix[x,y][2])
strip.show()
time.sleep(0.3)
blankLine()
# main function - start of the program - you have to provide an image name
as an argument
# Create NeoPixel object with appropriate configuration.
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA,
LED_INVERT)
# Intialize the library (must be called once before other functions).
strip.begin()
showPicture(sys.argv[1], strip)
不知道怎么回事?已解决
新问题:LED 显示错误的颜色。但奇怪的是,这只是在这个脚本中。如果使用其他脚本,它会显示正确的颜色。例如,当它应该显示紫色时它是蓝色的。
暂时还不能发表评论,所以写下这个回答:
sys.argv[1] 指的是您在调用脚本时为脚本提供的文件名。
你 运行 你的剧本怎么样?
通过运行宁它喜欢:
python my_script.py my_file_name
你不应该再收到这个错误了
正如我在您的代码中看到的那样,指定您应该将文件名作为参数提供,所以您可能已经这样做了..?
我遇到了 python 脚本的问题。 我们想做光绘,除了剧本,其他都行。 总是有那个错误。这是代码的最后一行。没有那条线什么也不会发生。这是错误:
File "showImage.py", line 49, in <module>
showPicture(sys.argv[1], strip)
IndexError: list index out of range
代码如下:
import time
from neopixel import *
from PIL import Image
import sys
# see also https://learn.adafruit.com/neopixels-on-raspberry-pi/overview
# LED strip configuration:
LED_COUNT = 50 # Number of LED pix.
LED_PIN = 18 # GPIO pin connected to the pix (must support PWM!).
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
LED_DMA = 5 # DMA channel to use for generating signal (try 5)
LED_INVERT = False # True to invert the signal (when using NPN transistor
level shift)
# method to blank all LEDs
def blankLine():
for x in range(LED_COUNT):
strip.setPixelColorRGB(x, 0,0,0)
strip.show()
# method to resize picture and show in column per column on the led strip
def showPicture(filename, strip):
blankLine()
# open file
img = Image.open(filename).convert("RGB")
# resize file
newWidth = float(img.size[0])/float(img.size[1])*LED_COUNT
img = img.resize( (int(newWidth), LED_COUNT))
width = img.size[0]
height = img.size[1]
pix = img.load()
for x in range(width):
for y in range(height):
strip.setPixelColorRGB(y, pix[x,y][0], pix[x,y][1], pix[x,y][2])
strip.show()
time.sleep(0.3)
blankLine()
# main function - start of the program - you have to provide an image name
as an argument
# Create NeoPixel object with appropriate configuration.
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA,
LED_INVERT)
# Intialize the library (must be called once before other functions).
strip.begin()
showPicture(sys.argv[1], strip)
不知道怎么回事?已解决
新问题:LED 显示错误的颜色。但奇怪的是,这只是在这个脚本中。如果使用其他脚本,它会显示正确的颜色。例如,当它应该显示紫色时它是蓝色的。
暂时还不能发表评论,所以写下这个回答:
sys.argv[1] 指的是您在调用脚本时为脚本提供的文件名。 你 运行 你的剧本怎么样?
通过运行宁它喜欢:
python my_script.py my_file_name
你不应该再收到这个错误了
正如我在您的代码中看到的那样,指定您应该将文件名作为参数提供,所以您可能已经这样做了..?