尝试使用 OpenCV 从 Raspberry Pi 相机模块读取帧,但帧显示为黑色

问题描述 投票:0回答:1

我正在尝试使用 OpenCV 从 Raspberry Pi 相机模块捕获图像。代码运行没有错误,但我得到的框架是全黑的。

当我使用

rpicam-still -o Desktop/image.jpg
时,我可以从相机获取静态图片。然而,当我运行在互联网上找到的这段代码时,我只得到一个全黑的框架。我不确定我从哪里得到它,但它是一个只是尝试使用 OpenCV 的通用代码。

代码:

import numpy as np
import cv2 as cv

cap = cv.VideoCapture(0)
if not cap.isOpened():
    print("Cannot open camera")
    exit()

while True:
    ret, frame = cap.read()
    if not ret:
        print("Can't receive frame (stream end?). Exiting ...")
        break

    print(frame.max(), frame.mean())

    cv.imshow('frame', frame)
    cv.imwrite('frame.png', frame)

    if cv.waitKey(1) == ord('q'):
        break

cap.release()
cv.destroyAllWindows()

更新:

现在,这就是我的代码在您建议的修改后的样子。然而,结果保持不变,因为我仍然得到一个黑框。此时,我已经修改了几乎所有建议的内容,但我没有在这段代码中设置曝光时间,因为我之前尝试过,但它似乎没有改进任何东西。如果有人认为我应该尝试再次设置曝光时间,请告诉我,以及是否需要更多信息。

此外,我在 Thonny IDE 中运行此程序,并且使用带有 RaspiCam 模块的 Raspberry Pi 3(带有 Raspberry Pi OS 64 位)。我已经检查了 OpenCV 安装,一切似乎都很好,但我将包括我正在使用的 Python 和 OpenCV 版本:

$ pip show opencv-python
Name: opencv-python
Version: 4.10.0.84
Summary: Wrapper package for OpenCV python bindings.
Home-page: https://github.com/opencv/opencv-python
Author: 
Author-email: 
License: Apache 2.0

$ python3 --version
Python 3.11.2

(这是我第一次在这里发帖,英语不是我的母语,所以如果您对我的写作或我提供的数据有任何疑问,请告诉我。)

python opencv raspberry-pi camera
1个回答
0
投票

抱歉,我不得不删除我的答案,因为它不是 Picamera 2。

OP 是这么说的, 我使用的是 Raspberry Pi 相机模块,它直接连接到 HDMI 和音频 (P2) 端口之间的端口。这是一个使用扁平电缆的 CSI 连接器

要将 Picamera 2 用于 Bookworm:

片段:

from picamera2 import Picamera2, Preview
import time
picam2 = Picamera2()
camera_config = picam2.create_preview_configuration()
picam2.configure(camera_config)
picam2.start_preview(Preview.QTGL)
picam2.start()
time.sleep(2)
picam2.capture_file("test.jpg")

您可以通过以下链接学习教程:PiCamera 2

© www.soinside.com 2019 - 2024. All rights reserved.