标签: picamera

OSError:libmmal.so:无法打开共享对象文件:尝试在 Raspbian 上运行 picamera 时没有此类文件或目录

我正在尝试使用 Raspberry pi B+ 中的 picamera 模块打开相机,其中安装了 Raspbian 64 位操作系统。我收到此错误:

Traceback (most recent call last):
File "/home/pi/Documents/hydroponics/scripts/picamera_test.py", line 1, in <module>
    from picamera import PiCamera
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/__init__.py", line 72, in <module>
    from picamera.exc import (
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/exc.py", line 41, in <module>
    import picamera.mmal as mmal
  File "/home/pi/.local/lib/python3.9/site-packages/picamera/mmal.py", line 49, in <module>
    _lib = ct.CDLL('libmmal.so')
  File "/usr/lib/python3.9/ctypes/__init__.py", line 374, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libmmal.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

相机已启用(我尝试使用 opencv 捕获相机并且它有效)。我sudo …

raspberry-pi raspbian picamera

7
推荐指数
1
解决办法
2万
查看次数

picamera:在后台连续捕获的同时捕获一帧

我正在使用 python 的 picamera 模块捕获游戏中时光倒流:

from picamera import PiCamera, Color
class EggAlertCam:

    def __init__(self):
        self.camera = PiCamera()
        self.camera.start_preview()

    def capture_thread_task(self):

        filename = os.path.join(self.SAVEPATH, self.safe_camname + '_{timestamp:%Y%m%d-%H%M%S}-{counter:03d}' + '.jpg' )
        starttime = dt.datetime.now()
        current_time = dt.datetime.now()

        for filename in self.camera.capture_continuous(filename):
            print('Captured {}'.format(filename))
            self.wait(current_time)
            current_time = dt.datetime.now()

    def get_frame(self, size=None):
        if size is None:
            size = (640,480)
        output = io.BytesIO()
        self.camera.capture(output, format='jpeg', resize=size, use_video_port=True)
        output.seek(0)
        return output
Run Code Online (Sandbox Code Playgroud)

capture_thread_task在线程中运行,我有一个 Flask 应用程序,允许通过调用get_frame.

我希望video_port=True即使在捕捉延时拍摄时也能获取(更高的噪音,但我不在乎)图像,但我得到了一个例外:

from picamera import PiCamera, Color …
Run Code Online (Sandbox Code Playgroud)

python raspberry-pi picamera

6
推荐指数
1
解决办法
883
查看次数

jetson nano 上的 Raspberry pi 相机无法正常工作

我在 jetson nano 上使用 raspberry pi 相机 v2。使用带有 python 的 gstreamer 可以正常工作,但尝试通过 javascript 运行它是行不通的。

这是我的一些方法:

方法 1:

带导航器:

<body>
    <div id="container">
        <video autoplay="true" id="videoElement"></video>
    </div>
    <!--<script type="module" src="./picam.js"></script>-->
    <script>
        var video = document.querySelector("#videoElement");

        if (navigator.mediaDevices.getUserMedia) {
            navigator.mediaDevices.getUserMedia({ video: true })
                .then(function (stream) {
                    video.srcObject = stream;
                })
        }
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

有回应:

(index):1 Uncaught (in promise) DOMException: Requested device not found

方法 2:

使用:https : //www.npmjs.com/package/pi-camera-connect

<body>
    <div id="container">
        <video autoplay="true" id="videoElement"></video>
    </div>
    <script>
        const { StreamCamera, Codec } = …
Run Code Online (Sandbox Code Playgroud)

javascript nvidia-jetson-nano picamera

5
推荐指数
0
解决办法
204
查看次数

使用来自 pi 相机的 python 解码并显示 H.264 卡盘视频序列

我想解码 H.264 视频序列并将它们显示在屏幕上。视频序列来自 pi 相机,我使用以下代码捕获

import io
import picamera

stream = io.BytesIO()
while True:
    with picamera.PiCamera() as camera:
        camera.resolution = (640, 480)
        camera.start_recording(stream, format='h264', quality=23)
        camera.wait_recording(15)
        camera.stop_recording()
Run Code Online (Sandbox Code Playgroud)

有什么方法可以解码“流”数据的序列并用 opencv 或其他 python 库显示它们?

python opencv h.264 raspberry-pi picamera

3
推荐指数
2
解决办法
6982
查看次数

在 Raspberry Pi 上运行的 Docker 容器中访问 picamera 时出错

我正在 Raspberry Pi 4 上运行 Docker 容器docker-compose,并且想使用picameraPython 中的模块来访问 PiHQCam。我尝试使用本教程让它工作:https://www.losant.com/blog/how-to-access-the-raspberry-pi-camera-in-docker。然而,当尝试构建图像时,它给了我这个错误:

ValueError: This system does not appear to be a Raspberry Pi
Run Code Online (Sandbox Code Playgroud)

然后我尝试了自己的解决方案(见下文),但遇到了这个错误:

picamera.exc.PiCameraMMALError: Failed to create MMAL component b'vc.camera_info': I/O error
Run Code Online (Sandbox Code Playgroud)

这是我的设置:

docker-compose.yml:

ValueError: This system does not appear to be a Raspberry Pi
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM balenalib/rpi-raspbian:latest

RUN apt-get update && \
    apt-get upgrade && \
    apt-get install -y python3 \
      python3-pip

WORKDIR /app

COPY requirements.txt .
RUN pip3 install -r requirements.txt

COPY …
Run Code Online (Sandbox Code Playgroud)

python raspberry-pi docker picamera

2
推荐指数
1
解决办法
1402
查看次数

使用 OpenCV 控制 Pi 相机曝光

我使用的是 Raspberry Pi V2.1 相机。我想使用 OpenCV 控制相机\xe2\x80\x99s 的曝光时间、快门速度等。我正在关注视频 I/O 文档的 OpenCV 标志。链接在这里:

\n

https://docs.opencv.org/3.4/d4/d15/group__videoio__flags__base.html

\n

例如:

\n

我尝试过使用

\n
cv2.CAP_PROP_AUTO_EXPOSURE = 0.25 and 0.75\n
Run Code Online (Sandbox Code Playgroud)\n

似乎自动曝光正在打开和关闭。但是当我尝试使用手动设置值时

\n
cv2.CAP_PROP_EXPOSURE = -1 to -13 (according to some online blogs)\n
Run Code Online (Sandbox Code Playgroud)\n

相机没有响应。

\n

其他标志也是如此。他们中的大多数似乎根本没有响应。\n我已阅读在线文档并了解到标志与相机相关。在这种情况下,OpenCV 文档根本没有帮助。

\n

所以我的问题是如何找出哪些标志对 Pi 相机有用以及这些标志的有效值是什么?

\n

先感谢您。

\n

python opencv picamera

2
推荐指数
1
解决办法
4031
查看次数

opencv 和 picamera (V2) 高分辨率下的白/蓝平衡误差

我的问题是当我将分辨率设置为高于 640x480 时,输出颜色仅位于右下部分。输出的其余部分呈蓝色。

我有一个带有 4GB 内存的 RaspyberryPi4 和一个 PiCamera V2。最高分辨率下CPU占用率不超过~65%。同样的错误也出现在另一个 rapberrypi 及其 picamera (V2 NOIR) 上。

这是图像(不要关心角落里的白条:它们来自糟糕的屏幕截图)

640x480 - 正常

1920x1080 - 有错误

3280x2464 - 有错误

这是我的 python 脚本:

import cv2
cap = cv2.VideoCapture(0)
width = 640; height = 480
# width = 1920; height = 1080
# width = 3280; height = 2464

cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
cv2.waitKey()

print(cap.get(cv2.CAP_PROP_FRAME_WIDTH),cap.get(cv2.CAP_PROP_FRAME_WIDTH))
while cap.isOpened():
    ret, frame = cap.read()
    cv2.imshow('Resolution: '+str(width)+'x'+str(height), frame)
    if cv2.waitKey(25) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

我知道如果分辨率较高,我会失去较高的帧速率。

有人知道错误的根源可能是什么和/或我如何解决此错误? …

python opencv resolution raspberry-pi4 picamera

1
推荐指数
1
解决办法
1004
查看次数