
import cv2

CAMERA_IDS = [0, 1, 2, 3, 4]
index = 0

while index < len(CAMERA_IDS):
    cam_id = CAMERA_IDS[index]

    print(f"正在测试 Camera ID = {cam_id} ...")

    cap = cv2.VideoCapture(cam_id, cv2.CAP_DSHOW)

    if not cap.isOpened():
        print(f"Camera {cam_id}: 无法打开")
        cap.release()
        index += 1
        continue

    # 尝试读取画面
    ret, frame = cap.read()

    if not ret:
        print(f"Camera {cam_id}: 无法读取画面")
        cap.release()
        index += 1
        continue

    print(f"Camera {cam_id}: 已打开")

    while True:
        ret, frame = cap.read()

        if not ret:
            break

        cv2.putText(
            frame,
            f"Camera ID: {cam_id} | N=Next | Q=Quit",
            (10, 30),
            cv2.FONT_HERSHEY_SIMPLEX,
            0.7,
            (0, 255, 0),
            2
        )

        cv2.imshow("Camera Detection", frame)
        key = cv2.waitKey(1) & 0xFF

        if key == ord("n"):
            break
        elif key == ord("q"):
            cap.release()
            cv2.destroyAllWindows()
            raise SystemExit

    cap.release()
    cv2.destroyAllWindows()
    index += 1

print("所有 Camera ID 测试完成。")