所以,我正在使用树莓派并尝试制作安全摄像头设备。我试图对每张照片进行编目,为每张照片添加一个新的.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()
答案 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)