我无法使用 if 语句让我的 Raspberry pi 相机改变效果
I can't get my Raspbery pi camera to change effects with if statements
我正在为我的计算机科学做一个项目class。我在 raspberry pi 上安装了一个摄像头和一个距离传感器。该程序的基本思想是 pi 将从运动传感器获取读数,然后根据读数使用相机拍照并显示不同的相机效果,然后不断更新距离和图片循环。
我的问题是它会卡在第一个被激活的相机效果上,我的意思是如果距离传感器没有检测到任何东西,它会拍出没有效果的照片,如果它拾起仔细阅读它会显示负数,但如果它最初没有检测到任何东西,它会继续拍照而不管实际读数是多少。
反之亦然,如果它检测到附近有东西,它会继续显示负面图片。我假设我做错了什么与我设置循环的方式有关。
from gpiozero import DistanceSensor
from gpiozero import DistanceSensor
from time import sleep
ultrasonic = DistanceSensor(echo=17, trigger=4)
ultra = ultrasonic.distance
camera = PiCamera()
for x in range(5):
print(ultrasonic.distance)
sleep(2)
while ultra == 1.0:
camera.start_preview(alpha=192)
sleep(5)
camera.capture("/home/pi/final.jpg")
camera.stop_preview()
False
while ultra <= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'negative'
sleep(5)
camera.capture("/home/pi/negativedistancefinal.jpg")
camera.stop_preview()
False
while ultra >= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'colorswap'
sleep(5)
camera.capture("/home/pi/colorswapdistancefinal.jpg")
camera.stop_preview()
试试这个:
from gpiozero import DistanceSensor
from gpiozero import DistanceSensor
from time import sleep
ultrasonic = DistanceSensor(echo=17, trigger=4)
camera = PiCamera()
for x in range(5):
ultra = ultrasonic.distance
print(ultrasonic.distance)
if ultra == 1.0:
camera.start_preview(alpha=192)
sleep(5)
camera.capture("/home/pi/final.jpg")
camera.stop_preview()
elif ultra <= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'negative'
sleep(5)
camera.capture("/home/pi/negativedistancefinal.jpg")
camera.stop_preview()
elif ultra >= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'colorswap'
sleep(5)
camera.capture("/home/pi/colorswapdistancefinal.jpg")
camera.stop_preview()
sleep(2)
您需要更新您的读数并用 if 代替 while
我正在为我的计算机科学做一个项目class。我在 raspberry pi 上安装了一个摄像头和一个距离传感器。该程序的基本思想是 pi 将从运动传感器获取读数,然后根据读数使用相机拍照并显示不同的相机效果,然后不断更新距离和图片循环。
我的问题是它会卡在第一个被激活的相机效果上,我的意思是如果距离传感器没有检测到任何东西,它会拍出没有效果的照片,如果它拾起仔细阅读它会显示负数,但如果它最初没有检测到任何东西,它会继续拍照而不管实际读数是多少。
反之亦然,如果它检测到附近有东西,它会继续显示负面图片。我假设我做错了什么与我设置循环的方式有关。
from gpiozero import DistanceSensor
from gpiozero import DistanceSensor
from time import sleep
ultrasonic = DistanceSensor(echo=17, trigger=4)
ultra = ultrasonic.distance
camera = PiCamera()
for x in range(5):
print(ultrasonic.distance)
sleep(2)
while ultra == 1.0:
camera.start_preview(alpha=192)
sleep(5)
camera.capture("/home/pi/final.jpg")
camera.stop_preview()
False
while ultra <= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'negative'
sleep(5)
camera.capture("/home/pi/negativedistancefinal.jpg")
camera.stop_preview()
False
while ultra >= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'colorswap'
sleep(5)
camera.capture("/home/pi/colorswapdistancefinal.jpg")
camera.stop_preview()
试试这个:
from gpiozero import DistanceSensor
from gpiozero import DistanceSensor
from time import sleep
ultrasonic = DistanceSensor(echo=17, trigger=4)
camera = PiCamera()
for x in range(5):
ultra = ultrasonic.distance
print(ultrasonic.distance)
if ultra == 1.0:
camera.start_preview(alpha=192)
sleep(5)
camera.capture("/home/pi/final.jpg")
camera.stop_preview()
elif ultra <= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'negative'
sleep(5)
camera.capture("/home/pi/negativedistancefinal.jpg")
camera.stop_preview()
elif ultra >= 0.05:
camera.start_preview(alpha=192)
camera.image_effect = 'colorswap'
sleep(5)
camera.capture("/home/pi/colorswapdistancefinal.jpg")
camera.stop_preview()
sleep(2)
您需要更新您的读数并用 if 代替 while