变量不递增

时间:2015-08-24 00:52:32

标签: python python-3.x camera raspberry-pi raspberry-pi2

所以,我正在使用树莓派并尝试制作安全摄像头设备。我试图对每张照片进行编目,为每张照片添加一个新的.jpg文件,我认为该部分已经缩小,但用于命名每张照片的变量不会增加。所以我有一个文件不断被每张照片取代。我非常困惑。在这里的代码,任何帮助表示赞赏。

#defines camera function
def camera(pic_num):
    with picamera.PiCamera() as camera:
        camera.start_preview()
        time.sleep(5)
        pic_num += 1
        camera.capture('/home/pi/locker_photos/' + str(pic_num) + '.jpg')
        print (pic_num)
        camera.stop_preview()

2 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为pic_num被分配为camera功能中的本地变量。解决问题的最简单方法是在pic_num函数之外的camera增加camera。{/ 1>}。

如果可以的话,这里有一个更聪明的方法来做这个命名并不涉及跟踪计数器:

#defines camera function
def camera():
    PHOTOS_DIR = '/home/pi/locker_photos/'
    with picamera.PiCamera() as camera:
        camera.start_preview()
        time.sleep(5)
        # Get the next highest number from the files that already exist
        pic_num = max(int(os.path.splitext(f)[0]) for f in os.listdir(PHOTOS_DIR)) + 1
        camera.capture(PHOTOS_DIR + str(pic_num) + '.jpg')
        print (pic_num)
        camera.stop_preview()

答案 1 :(得分:0)

我实际上并不建议使用while True:语句,但这样的事情应该有效:

def camera(pic_num):
    with picamera.PiCamera() as camera:
        camera.start_preview()
        time.sleep(5)
        camera.capture('/home/pi/locker_photos/' + str(pic_num) + '.jpg')
        print (pic_num)
        camera.stop_preview()
...
while True:
    pic_num=pic_num+1
    #now pic_num will be a unique number each time you call camera
    camera(pic_num)

或者

for pic_num in range(some_finite_number):
    #still will be unique
    camera(pic_num)