树莓派模拟照相机拍照实验

    前几天实验了OpenCV的安装,今天尝试组合轻触开关传感器加上摄像头模拟照相机进行拍照实验;其中参考文章:
(1)轻触开关传感器实验:https://www.shumeijiang.com/2019/11/10/轻触开关传感器实验.html;
(2)OpenCV安装:https://www.shumeijiang.com/2021/12/12/树莓派安装opencv-python.html;
(3)由于在vnc里执行,参考vnc安装:https://www.shumeijiang.com/2021/05/06/树莓派安装vnc.html
组装效果:
    由上图可见,我们将树莓派放进盒子里面,然后轻触开关粘在盒子顶部,摄像头粘贴在盒子表面;当需要拍照时,只需要按压一次轻触开关即可。盒子里面如下图:
实验代码:

#!/usr/bin/env python
#coding:utf-8

'''
from JiuJiang
树莓酱的操作实例
https:://www.suhmeijiang.com
'''

import cv2
import numpy as np
import RPi.GPIO as GPIO
import time
import random

#轻触开关
touchPin = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(touchPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#注册事件
GPIO.add_event_detect(touchPin, GPIO.FALLING)

#开始
cap = cv2.VideoCapture(0)
try:
    while True:
        # get a frame
        ret, frame = cap.read()
        cv2.imshow("capture", frame)

        #拍照
        if GPIO.event_detected(touchPin):
            i = random.randint(0,100)
            name = 'sample'+str(i)+'.jpg'
            cv2.imwrite(name, frame)
            print('已拍照')
            continue

        time.sleep(0.5)
except KeyboardInterrupt:
    print('拍照结束')

cap.release()
cv2.destroyAllWindows()
    我们打开VNC然后进入树莓派桌面,打开自带的Linux终端,然后找到我们的代码,执行命令:

python jiujiang.py
    然后点击轻触开关传感器,就像拍照时按下快门,可见终端提示“已拍照”,然后同目录文件夹下可见生成一张图片;如此,多次点击可见多次拍照,生成多个照片。
 视频效果如下:

树莓派安装OpenCV-Python

    OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上,包含树莓派基于Linux为内核的Debian系统。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
    其中OpenCV-Python是用于OpenCV的Python API,它是解决计算机视觉问题的Python专用库;接下来就尝试如何安装这个库。
    其中这次采用apt-get安装预构建安装包安装;首先确定要安装的Python版本,如果是Python2,则执行:

sudo apt-get install python-opencv
如果是Python3,则执行:

sudo apt-get install python3-opencv
执行过程如下图,可见会自动安装一系列依赖包,以及升级和建议安装:
执行成功后,执行:

import cv2
print(cv2.__version__)
如果没有报错,则表示安装成功: