问题标签 [picamera]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
114 浏览

nginx - 使用 raspap/lighttpd 而不是 nginx 服务 HLS

我目前使用picam 项目从树莓派中提供音频/视频,并将nginx其作为 HLS(Http Live Streaming)流进行流式传输(如项目页面中所述)。因此,在/etc/nginx/sites-available/default我添加:

然后,我可以访问我的流(例如使用 VLC 播放器)在http://mypi.local/hls/index.m3u8.

但是,我不再希望依靠我的互联网盒子进行流媒体播放。事实上,我希望我的客户直接连接到 pi。因此,我最近尝试使用 Raspap将我的树莓派转换为热点。

但是,由于 raspap 似乎lighttpd用作它的网络服务器,我想知道我如何仍然可以流式传输我的音频/视频流,因为它目前使用picamand完成nginx

0 投票
0 回答
35 浏览

python - PHP程序无法在Python脚本中执行piCamera函数

我正在制作一个执行 Python 脚本的 php 程序,其中相机正在录制。相机已插入 Raspberry Pi。这是 Python 脚本(我使用的是 Python3):

我通过一个 php shell_exec 函数调用这个脚本。这是php代码:

python 脚本执行良好,直到这一行:

我觉得php没有权限访问插入Raspberry的相机。我做了chmod 777 /var/wwwchmod 777 /dev/vchiq但没有任何效果。相机不记录任何东西。请帮助:)

0 投票
0 回答
57 浏览

python - 无法将流输出 (h264) 保存到文件

我有一个带有picamera-h264-web-streaming的覆盆子相机,并且遇到了无法将每一帧保存到我的覆盆子上的自定义视频文件的问题。我需要我的视频文件作为 h264 编解码器,但 mp4 也可以。每 15 分钟它应该创建一个新视频。流不会停止,所以我只更改文件名。

实际上,我将每个帧作为字节附加到文件中,并在录制为 mp4 后将其转换。我认为元文件或某些东西丢失了,因为所有视频都没有前 10-20 秒的记录。

通过使用 ffmpeg 进行转换,我得到以下错误: 转换错误

原始流输出.py:

流式传输和录制 output.py

我已经尝试过 OpenCV,但这会引发以下异常:

使用 OpenCV 的代码:

有人建议吗?

0 投票
0 回答
141 浏览

python - 如何使用 python 多处理捕获 pi 相机图像

我正在编写一个代码,当传感器使用多处理检测到相机图像时,它会捕获相机图像。

使用多处理的原因目前不在代码中,但我想用它在捕获期间实现不同的行为。

但是,当传感器在使用当前代码操作时第一次检测到图像时,可以很好地捕获图像。

从第二次检测开始,图像不像附加图像那样被捕获。

多处理中传递参数的方法似乎有问题,但是如果您知道原因以及如何解决,请告诉我。

在此处输入图像描述

0 投票
0 回答
23 浏览

camera - Native raspberry 64 OS raspivid:无法执行二进制文件

操作系统:

Linux raspberrypi 5.10.35-v8+ #1417 SMP PREEMPT Fri May 7 17:44:55 BST 2021 aarch64 GNU/Linux

重新安装根本不起作用

无法执行 rasp:

在此处输入图像描述

ffmpeg 工作正常。

0 投票
1 回答
123 浏览

python - 为什么在 openCV 和 python 中将 fps 从 30 翻倍到 60 时,生成的视频时间只有一半?

我的总体目标是使用 Raspberry Pi HQ 相机拍摄视频。当使用终端和标准 raspivid 命令(如raspivid -w 640 -h 480 -fps 90 -t 10000 -o video.h264生成的视频)时,未存储有关 fps(和 frame_count)的正确信息。我使用以下代码使用openCV和python对其进行了检查:

我希望它是 fps:90.0 和 frame_count:900.0,但它是 fps:25.0 和 frame_count:-192153584101141.0。

经过一些研究,我得出结论,.h264 不存储正确的 fps 值,而是存储默认值(在我的情况下为 25.0 fps)。

现在我的下一个尝试是使用 openCV 和 python 用 HQ 摄像头捕捉视频。我尝试使用以下代码来执行此操作(尝试使用 openCV 捕获视频时这几乎是标准的):

现在录制大约 10 秒时。长视频,然后使用与以前相同的方法对其进行分析,结果符合预期 fps:30.0 和 frame_count:(大约)300.0。

现在,将第 8 行中的 fps 从 30 更改为 60out = cv2.VideoWriter('video_out.avi', fourcc, 30.0, (640, 480))out = cv2.VideoWriter('video_out.avi', fourcc, 60.0, (640, 480))分析大约 10 秒。之后的长视频结果与预期的不同。结果不是 fps:60.0 和 frame_count:(大约)600.0,而是 fps:60.0 和 frame_count:(大约)300.0。此外,视频现在只有 5 秒。长而不是 10 秒。

我得出的结论是,视频仍然以 30 fps 和 10 秒的速度录制。记录总数300帧是正确的。但是在 video_out.avi 文件中,fps 设置为 60 fps,这导致(60 fps)视频只有一半的时间,因为总共仍然只有 300 帧可用。

现在剩下的问题是:

我以哪种方式更改上面的代码,以便能够捕获 10 秒。60 fps 的长视频,总共获得 600 帧?

编辑#1

@Tiphel 在他的评论中表示,添加 cap.set(cv2.CAP_PROP_FPS, 10) 可以解决问题;它似乎奏效了。我现在尝试以某种方式编辑代码,它记录之前定义的时间(例如 5 秒)然后停止。通过这样做,我可以验证是否有 5 秒的 60 fps 视频。的记录确实有 300 帧。此尝试导致以下代码:

在分析了现在生成的“vid_out.avi”文件后,我预计它是 fps:30.0 和 frame_count 150.0,但它是 fps:30.0 和 frame_count:115.0。然后我查看了“fps_and_time_passed.txt”文件,令我惊讶的是,大约有 1.4 秒。一开始的延迟:

如您所见,延迟介于第一个和第二个输出之间。

所以我的新问题是:

我怎样才能摆脱这种延迟?

0 投票
0 回答
236 浏览

python - 树莓派相机模块问题 OSError

我正在尝试使用 Python 在 Raspberry Pi 3 Model B 上运行 Raspberry Pi 相机模块,但出现此错误:

0 投票
0 回答
25 浏览

python - 从 PiCam 保存的视频的快进问题

我正在编写一个代码,它从 Raspberry Pi 读取传入的视频,对帧执行人脸检测,在人脸周围放置帧,然后将帧写回具有相同 FPS 的 MP4 文件。我使用 OpenCV 打开和读取 PiCam。

当我查看保存的视频时,它看起来移动得太快了。我让我的代码运行了大约 2 分钟,但我的视频长度为 30 秒。当我禁用所有后处理(面部检测)时,我可以观察到输出视频的稳定速度。

我可以理解 Raspberry Pi 有一个用于大量计算的小型处理器,但不明白为什么视频长度更短?我的面部检测管道是否有可能比相机 FPS 运行得慢得多,所以相机缓冲区应该丢弃不会被管道及时抓取的帧?

非常感谢这里的任何帮助!

0 投票
1 回答
623 浏览

python - 如何在树莓派上使用 OpenCV python 仅获取水位轮廓

在此处输入图像描述我正在使用带有 pi 相机的 raspberry pi4 (8GB) 来检测水位。我已经定义了一条从 0,375 到 800,375 的线。如果水位等高线的最高点高于这条线,那么我想调用一个函数。这是我的代码和附加的设置图像。如何仅获得水位轮廓。是否需要对轮廓进行精明的边缘检测才能获得清澈的水位?首先我得到最大的轮廓,然后定义它的最高点。

0 投票
1 回答
86 浏览

python - Python3 PiCamera 模块

我有一个带摄像头(黑色)的 Raspberry Pi 3,我在 python 上找到了这个 pi 摄像头模块。因此,当我启动 python 脚本时,我现在拥有一个 Web 服务器,它可以让我看到扔我的相机。很好很酷,但现在我想用一些 php 和 html 制作一个带有两个按钮的表单:

  1. 开始视频,实际上是在 /home/pi/x 的某个地方开始录制视频
  2. Stop Video ,它实际上只停止录制而不是整个流。

这是我的代码