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

    前几天实验了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
    然后点击轻触开关传感器,就像拍照时按下快门,可见终端提示“已拍照”,然后同目录文件夹下可见生成一张图片;如此,多次点击可见多次拍照,生成多个照片。
 视频效果如下:

树莓派摄像头实验(一)

    很久前曾入手一个红外夜视摄像头,最近倒腾出来准备试一下;尝试如何拍照然后手机查看,还有实时摄像然后手机浏览。
首先连接摄像头,推荐关机连接,防止损坏摄像头;连接效果如下:
连接效果
然后打开树莓派Camera设置,执行以下命令:(当然也可以页面设置)

sudo raspi-config
命令执行后,选择5 Interfacing Options,然后Enter键选择;
列表项
然后选择第一个Camera选项,按Enter键选择,然后选择"是",重启系统完成。
选择Camera
(一)拍照,执行如下命令

raspistill -o show.jpg -rot 0 -w 1024 -h 768 -t 5000   -v
其中raspistill是摄像头拍照命令,具体参数如下:
参数含义
-o图像输出地址,如果为”-“,将输出标准输出设备
-rot图像旋转角度,支持0、90、180、270
-w图像宽度width
-h图像高度height
-t图像拍摄延迟时间,单位毫秒
-v输出拍照详细信息
-tl间隔拍照,每多少毫秒拍摄一张
-q设置图片品质,范围0-100
命令执行后,可见当前目录产生一个show.jpg图片,为了查看图片内容,我们可以参考上次文章,https://www.shumeijiang.com/2021/10/30/手机连接树莓派实验/;
(1)手机ssh登录树莓派;
(2)进入相片所在目录;
(3)点击图片下载,然后在下载目录点击图片查看;
(4)效果如下图;
手机查看效果
(二)实时摄像,执行raspivid命令,此命令是树莓派摄像命令;

raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8989}' :demux=h264
注意:如果执行上面命令报错cvlc命令没有找到,则需要执行sudo apt install vlc安装即可。
其中dst是输出端口,具体的参数含义可以网上查询;执行后,数据流产生了,但是我们没有存储,这个时候就需要一个能实时查看图像流的软件,可以用VLC、KMPlayer;此处我们用KMPlayer,效果如下图;(App Store下载)
浏览效果
    输入树莓派的静态IP加上命令启动时的端口号,然后点击打开,可以看到摄像头的实时视频,不过测试时发现有些延迟严重,下篇文章就实验PiCamera。