树莓派按键中断实现摄像头拍照

先安装PiCamera模块

使用Python中断函数add_event_detect,并定义好回调函数call_back()

  • add_event_detect(channel, GPIO.RISING, callback=test_callback, bouncetime=200)
  • 上升沿检测,关联回调,bouncetime用于按键软件防抖

调用PiCamera方法

def catpure_img():
    camera = PiCamera()
    camera.resolution = (1024,768)
    camera.start_preview() #预览2秒
    # Camera warm-up time 2s,beacause it need 2's to ***
    GPIO.output(22,GPIO.HIGH) 
    sleep(2)
    camera.capture('img_catpure/two.jpg') #捕捉图片
    camera.stop_preview() # 关闭预览
    camera.close() #要关闭,不然第二次中断响应会报错
    GPIO.output(22, GPIO.LOW)

总代吗


#!coding:utf-8
from time import sleep
from picamera import PiCamera
import RPi.GPIO as GPIO

BtnPin = 11
Gpin   = 12
Rpin   = 13

def catpure_img():
    camera = PiCamera()
    camera.resolution = (1024,768)
    camera.start_preview()
    # Camera warm-up time 2s,beacause it need 2's to ***
    GPIO.output(22,GPIO.HIGH)
    sleep(2)
    camera.capture('img_catpure/two.jpg')
    camera.stop_preview()
    camera.close()
    GPIO.output(22, GPIO.LOW)

def setup():
    GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
    GPIO.setup(Gpin, GPIO.OUT)     # Set Green Led Pin mode to output
    GPIO.setup(Rpin, GPIO.OUT)     # Set Red Led Pin mode to output
    GPIO.setup(22, GPIO.OUT)
    GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Set BtnPin's mode is input, and pull up to high level(3.3V)
    GPIO.add_event_detect(BtnPin, GPIO.BOTH, callback=detect, bouncetime=200)

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
        catpure_img()
    if x == 1:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)

def Print(x):
    if x == 0:
        print('    ***********************')
        print('    *   Button Pressed!   *')
        print('    ***********************')

def detect(chn):
    Led(GPIO.input(BtnPin))
    Print(GPIO.input(BtnPin))

def loop():
    while True:
        pass

def destroy():
    GPIO.output(Gpin, GPIO.HIGH)       # Green led off
    GPIO.output(Rpin, GPIO.HIGH)       # Red led off
    GPIO.cleanup()                     # Release resource

if __name__ == '__main__':     # Program start from here
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # When 'Ctrl+C' is pressed, the child program destroy() will be  executed.
        destroy()

转载于:https://www.cnblogs.com/guguobao/p/9735686.html

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值