尝试使用 picam2 库时出错:模块“kms”没有属性“PixelFormat”

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

我一直面临一个问题。我有一个项目,我必须使用insightface 的面部识别来检测认识的人。硬件方面,我得到了一个 Raspberry pi 5 和两个 picam(v1.3、v2.1)。我发现pi5上的系统没有检测到picam 2有问题,所以我使用1.3版本。然而,我一直面临的问题是不断出现的错误 AttributeError: module 'kms' has no attribute 'PixelFormat'.

为了解决这个问题,我重新安装了 picam2 库,确认我没有冲突版本,尝试不使用预览。无论我尝试什么,都会发生错误。

import cv2
from picamera2 import Picamera2
import numpy as np
import pickle
from insightface.app import *
import Custom_Buzzer
from gpiozero import Device
from gpiozero.pins.lgpio import LGPIOFactory
Device.pin_factory = LGPIOFactory()
picam2 = Picamera2(preview=None)
picam2.configure(picam2.create_still_configuration(main={"format": "RGB888", "size": (640, 480)}))
picam2.start()

# Load the known face embeddings
with open("known_faces.pkl", "rb") as f:
    known_face_encodings, known_face_names = pickle.load(f)

# Initialize the FaceAnalysis app
app = FaceAnalysis()
app.prepare(ctx_id=-1, det_size=(640, 640))

buzzer = Custom_Buzzer.create_buzzer(16)

while True:
    # Capture frame-by-frame
    frame = picam2.capture_array()
    
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # Perform face detection
    faces = app.get(rgb_frame)

    for face in faces:
        # Compute the face embedding
        face_embedding = face.normed_embedding

        # Compare against known faces
        distances = np.linalg.norm(np.array(known_face_encodings) - face_embedding, axis=1)
        min_distance_index = np.argmin(distances)
        min_distance = distances[min_distance_index]

        # Set a threshold for the distance to consider it a match
        threshold = 1.0
        if min_distance < threshold:
            name = known_face_names[min_distance_index]
            Custom_Buzzer.initialize_buzzer(buzzer, 2)
        else:
            name = "Unknown"
            Custom_Buzzer.initialize_buzzer(buzzer, 5)
python raspberry-pi picamera
1个回答
0
投票

您看到的错误 AttributeError: module 'kms' has no attribute 'PixelFormat' 通常表示 Picamera2 库或其与 Raspberry Pi 相机通信的方式存在问题。这一点尤其重要,因为您使用的是 Raspberry Pi 5,它可能有一些特定的要求或兼容性问题。在 Raspberry Pi 上使用相机模块时,它们依赖 libcamera 框架来管理图像捕获和处理。 Picamera2 库构建在该框架之上,这些库版本之间的任何差异都可能导致您遇到的错误。本质上,如果您安装的库正在寻找系统上 libcamera 版本中不可用的功能,您就会遇到问题。另一个需要考虑的方面是如何在代码中配置相机。在您的设置中,您在创建相机配置时指定像素格式和大小。如果这些设置与您的相机支持的设置不一致,则可能会导致问题。例如,如果您尝试使用相机无法识别的像素格式,则会触发属性错误。还值得一提的是,确保您的 Raspberry Pi 是最新的可以帮助避免此类问题。操作系统及其使用的库会经常更新,这些更新可能包括针对硬件兼容性问题的修复。如果您的操作系统落后,它可能无法与较新的硬件或库很好地配合。最后,接触更广泛的社区确实很有帮助。其他人可能也遇到过类似的问题,检查论坛或 GitHub 等平台可以提供您在官方文档中可能找不到的见解或修复。有时,最好的解决方案来自处理相同技术的其他用户分享的现实经验。因此,简而言之,此错误可能是由于与相机设置和所涉及的库相关的版本不匹配或配置错误造成的。保持一切更新并检查社区资源是解决此类问题的关键。

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