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

先安装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

时间: 2024-10-31 18:55:21

树莓派按键中断实现摄像头拍照的相关文章

nios II--实验4——按键中断硬件部分

按键中断 硬件开发 新建原理图 1.打开Quartus II 11.0,新建一个工程,File -> New Project Wizard-,忽略Introduction,之间单击?Next>?进入下一步.分别设置工程工作目录.工程名称.这里需要注意的是工程工作目录中请使用英文,不要含有空格等,否则在后面使用Nios II IDE的时候会出现问题.设置好后如图1所示.然后进行下一步.这里工程命名为lab3_bnt 2.添加已经存在的文件,这里没有需要添加的文件,直接单击?Next>?进入

android调用摄像头拍照

调用手机摄像头拍照,获取拍照后的图片数据.以下代码是在activity中:     // 调用摄像头         Button b = (Button) findViewById(R.id.btn1);     b.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             // Here we fire the inte

2、CC2541芯片中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

win8 metro 自己写摄像头拍照项目

这个项目不是用的系统自带的CameraCaptureUI,是自己写的摄像头的调用,界面做的不好所以,不放了,但是可以实现拍照功能: 下面是using 程序命名空间: using Windows.Media.Capture; using Windows.Media.MediaProperties; using Windows.UI.Xaml.Media.Imaging; using Windows.Storage; using Windows.Storage.Pickers; using Wind

STM32学习之路-按键中断测试(外部中断)

终于有时间再来学习STM32了~ 这几天都在忙着该死的考试.直接进入正题 开发板:奋斗V5 这个按键中断测试的要求是:按键2(K2)按下,LED2(V7)亮, 再一次按下就灭,循环.. 好,先看看按键和LED的原理图 好吧~ 虽然图截得不是很好看,但是能看到K2接的是PC2, LED2接的是PD6 ok,剩下的就是配置工作了.. 先来理一理思路: (1)初始化系统时钟 (2)初始化外部时钟(你所用到的东西) (3)配置LED (4)配置中断优先级 (5)配置外部中断线 (6)中断处理函数 恩,差

6.6410和210的按键中断编程

6.6410和210的按键中断编程 首先是打开6410底板原理图: 可以看到OK6410有六个按键: 可以看到OK6410的六个按键对应的引脚是KEYINT1.KEYINT2.KEYINT3.KEYINT4.KEYINT5和KEYINT6.接着在核心板的原理图里搜索这个词: 可以看到按键中断与GPN系列寄存器的引脚是互用的,接着就是在芯片手册里查看有关GPN系列寄存器的信息,重点是关注GPN控制寄存器:GPNCON: 这里我们使用到的按键对应的中断,需要配置成中断的方式,对应的GPN位设置为10

VS2010开发MFC ActiveX,摄像头拍照上传Webservice(2)

继续记录,第二步开发摄像头拍照功能. 使用vfw.h开发摄像头拍照功能,关于vfw网上有很多文章,很多代码可以参考 参考:http://blog.163.com/huangqiao_8/blog/static/33900492008017111847364/ Vedio for Windows 是WIN32 SDK 中多媒体编程SDK 的视频开发工具.在微软的Visual C ++中提供了Vedio for Windows 的头文件vfw.h 和库文件vfw32.lib. 在ActiveX中显示

C# 使用摄像头拍照 支持Win7 64位

原文:C# 使用摄像头拍照 支持Win7 64位 So, how do we capture an image from a WebCam? Once you download the source code that is attached to the article you should have the following three projects: Demo – simple Windows Forms project that demonstrates how a WebCam

在WPF中使用AForge.net控制摄像头拍照

原文:在WPF中使用AForge.net控制摄像头拍照 利用AForge.net控制摄像头拍照最方便的方法就是利用PictureBox显示摄像头画面,但在WPF中不能直接使用PictureBox.必须通过<WindowsFormsHost></WindowsFormsHost>来提供交换功能.其解决方法如下: 1.按照常规方法新建一个WPF应用程序: 2.添加引用 WindowsFormsIntegration  (与WinForm交互的支持) System.Windows.For