脚本专栏 发布日期:2025/11/3 浏览次数:1
关于树莓派,想必从事嵌入式开发的开发者都有听过,树莓派原名为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
这条指令的意义如下:
以上就是Python实现树莓派摄像头持续录像并传送到主机的步骤的详细内容,更多关于python 树莓派的资料请关注其它相关文章!