Python实现树莓派摄像头持续录像并传送到主机的步骤

(编辑:jimmy 日期: 2024/9/21 浏览:2)

关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为Raspberry Pi,也就是它的英文读法,树莓派诞生于英国,由“Raspberry Pi 基金会”这个慈善组织注册开发。埃"htmlcode">

# -*- coding: utf-8 -*-

import os
import signal
import subprocess
import sys
import uuid

# 获取程序运行的本地目录,和用来存储接收结果的recv文件夹目录

BASEPATH = os.path.realpath(os.path.dirname(sys.argv[0]))
RECV = os.path.join(BASEPATH, 'recv')

# 如果接收目录不存在,就自动新建

print " *** Received files are put into: %s" % RECV
if not os.path.isdir(RECV):
  os.system('mkdir -p %s' % RECV)

# 下面的部分用来记录正在等待接收的文件。这个文件会以一个UUID.tmp的格式命名。
# 在接收成功后,就会被重命名为UUID。(UUID是一个特定格式的唯一字符串,不会重复)。
# 如果在接收过程中按下Ctrl+C,就会发送一个终止命令给程序,这样程序会退出,
# 并删除没有接收完整的那个文件。

working = False
fullname = False

def sigint_handler(signum, frame):
  global fullname, working
  print "\n"
  print " *** SIGINT detected. End the program."
  if working and fullname != False:
    print " *** Unfinished recording deleted."
    os.system('rm -f %s.tmp' % fullname)
  exit()
signal.signal(signal.SIGINT, sigint_handler)

# 使用一个死循环来不断运行netcat(nc)命令。

n = 1
while True:
  recname = str(uuid.uuid1())
  print " [%8d] Listening for file [%s]. Use Ctrl+C to stop this script." % (n, recname)
  fullname = os.path.join(RECV, recname)

  working = True # 标记接收开始
  # 使用 nc -lp 10401 命令接收数据,表明端口为10401。
  subprocess.call('nc -lp 10401 > %s.tmp' % fullname, shell=True)
  os.system('mv %s.tmp %s' % (fullname, fullname))
  working = False # 标记接收完毕

  n += 1

上文所述的脚本,在笔记本上运行之后,就会在本地开启10401端口,等待树莓派上传送的文件。 传送的会直接写入一个由UUID(全局唯一ID)标识的文件中,可以供以后处理。

在树莓派上摄像并发送摄像结果

在树莓派上命令拍摄的方法是:

$ raspivid -o - -b 16000000 -t 100000 | nc xxx.xxx.x.xxx 10401

这条指令的意义如下:

  • -o - ,使用-o设定输出,-表示直接输出到标准输出中,不写入文件。
  • -b 16000000 ,设定输出比特率为16000000 bit/s。这大约是2兆字节每秒。
  • -t 100000 ,设定录像时间为100000毫秒,亦即100秒。
  • | nc xxx.xxx.x.xxx 10401 ,使用管道|将结果导入到nc中,nc是发送模式,目标是xxx.xxx.x.xxx计算机上的10401端口。

以上就是Python实现树莓派摄像头持续录像并传送到主机的步骤的详细内容,更多关于python 树莓派的资料请关注其它相关文章!

一句话新闻
微软与英特尔等合作伙伴联合定义“AI PC”:键盘需配有Copilot物理按键
几个月来,英特尔、微软、AMD和其它厂商都在共同推动“AI PC”的想法,朝着更多的AI功能迈进。在近日,英特尔在台北举行的开发者活动中,也宣布了关于AI PC加速计划、新的PC开发者计划和独立硬件供应商计划。
在此次发布会上,英特尔还发布了全新的全新的酷睿Ultra Meteor Lake NUC开发套件,以及联合微软等合作伙伴联合定义“AI PC”的定义标准。