cv2_enumerate_cameras
Retrieve camera names, VID/PID information, device paths, and the corresponding OpenCV indices.
Installation
Install from PyPI
pip install cv2-enumerate-cameras
Quick Start
Run as a Script
A simple command-line script is provided to enumerate all cameras:
lscam
Or run the module directly:
python -m cv2_enumerate_cameras
Integrate into Your Project
To enumerate cameras inside your code:
from cv2_enumerate_cameras import enumerate_cameras
for camera_info in enumerate_cameras():
print(camera_info)
By default, enumerate_cameras() is called with the parameter CAP_ANY, which instructs cv2_enumerate_cameras to probe all supported backends when enumerating cameras. Example output:
1400: 2K USB Camera (2BDF:02A5)
700: 2K USB Camera (2BDF:02A5)
701: OBS Virtual Camera
These seemingly unusual indices are intentional: OpenCV encodes the backend ID into the high digits of the index. For example, 701 indicates the second camera (1) on the DSHOW backend (700).
To explicitly use a specific backend:
import cv2
from cv2_enumerate_cameras import enumerate_cameras
for camera_info in enumerate_cameras(cv2.CAP_MSMF):
print(camera_info)
Output:
0: 2K USB Camera (2BDF:02A5)
1: ...
2: ...
Once you have found the target camera, you can create a cv2.VideoCapture by its index and backend properties.
cap = cv2.VideoCapture(camera_info.index, camera_info.backend)
When using CAP_ANY, the backend argument can be omitted. But for robust behavior, explicitly passing it is strongly recommended.
Supported Backends
Not all OpenCV backends support camera enumeration. Use the following snippet to print the names of the supported backends:
from cv2.videoio_registry import getBackendName
from cv2_enumerate_cameras import supported_backends
for backend in supported_backends:
print(getBackendName(backend))
Windows:
- Microsoft Media Foundation (
CAP_MSMF) - DirectShow (
CAP_DSHOW)
Linux:
- GStreamer (
CAP_GSTREAMER) - V4L/V4L2 (
CAP_V4L2)
macOS:
- AVFoundation (
CAP_AVFOUNDATION)
CameraInfo Object
enumerate_cameras() returns a list of CameraInfo objects:
def enumerate_cameras(apiPreference: int = CAP_ANY) -> list[CameraInfo]:
...
CameraInfo.index: Camera index for the selected backendCameraInfo.name: Human-readable device nameCameraInfo.path: Device path (macOS:uniqueID);CameraInfo.vid: USB Vendor ID (if available);CameraInfo.pid: USB Product ID (if available);CameraInfo.backend: OpenCV backend used for enumeration.
Examples
Automatically Select a Camera by VID/PID
This example finds a camera using VID/PID and creates a VideoCapture:
import cv2
from cv2_enumerate_cameras import enumerate_cameras
# Search for a specific camera by VID and PID
def find_camera(vid, pid, apiPreference=cv2.CAP_ANY):
for i in enumerate_cameras(apiPreference):
if i.vid == vid and i.pid == pid:
return cv2.VideoCapture(i.index, i.backend)
raise RuntimeError('Camera not found!')
# Example: Find the camera with VID 0x04F2 and PID 0xB711
cap = find_camera(0x04F2, 0xB711)
# Capture and display frames
while True:
ok, frame = cap.read()
if not ok:
break
cv2.imshow('frame', frame)
if cv2.waitKey(1) == ord('q'):
break
Release files for cv2-enumerate-cameras 1.3.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| cv2_enumerate_cameras-1.3.3.tar.gz | 12.9 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cv2_enumerate_cameras-1.3.3-py3-none-any.whl | Python 3 | none | any | Details |
| cv2_enumerate_cameras-1.3.3-cp32-abi3-win_amd64.whl | CPython 3.2 | abi3 | Windows x86-64 | Details |
| cv2_enumerate_cameras-1.3.3-cp32-abi3-win32.whl | CPython 3.2 | abi3 | Windows x86-32 | Details |
Total release size: 67.6 kB
Release files / cv2_enumerate_cameras-1.3.3.tar.gz
| Download URL | cv2_enumerate_cameras-1.3.3.tar.gz |
|---|---|
| Size | 12.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc09429e3fd4a2ea3449bbc0ee12420666aee6705d80a36f2235503d90fff3a2
|
|
BLAKE2b-256 checksum How to use checksums |
88406208e5ef9a0e46e9acc233c00a1b30728ca3b03b429e751c59e4d9cf5c8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.
Transparency logRelease files / cv2_enumerate_cameras-1.3.3-py3-none-any.whl
| Download URL | cv2_enumerate_cameras-1.3.3-py3-none-any.whl |
|---|---|
| Size | 12.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f83c7329d85462bc27d805aa25a3cde73aa66d7e28e2f5b6cb425ccc84c965d0
|
|
BLAKE2b-256 checksum How to use checksums |
98b1183463b131f6fb459186fd060ab1761aa8230f52417efc827d335c72df54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.
Transparency logRelease files / cv2_enumerate_cameras-1.3.3-cp32-abi3-win_amd64.whl
| Download URL | cv2_enumerate_cameras-1.3.3-cp32-abi3-win_amd64.whl |
|---|---|
| Size | 21.8 kB |
| Tags | CPython 3.2 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
fb4c9cf9d3f9d1bc0e648943f6683d5dd0228c93d6ed11aae471500701009dee
|
|
BLAKE2b-256 checksum How to use checksums |
1ae8197478c59e66ace7b41cbe6a5ce9cbbea42dfe6a0afba3d4dcc5d4b59df4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.
Transparency logRelease files / cv2_enumerate_cameras-1.3.3-cp32-abi3-win32.whl
| Download URL | cv2_enumerate_cameras-1.3.3-cp32-abi3-win32.whl |
|---|---|
| Size | 20.9 kB |
| Tags | CPython 3.2 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
700d5d4283eb630e74d0a9e4829b9f5a3e373c3ce9a2e5bbed7959eb5bb31246
|
|
BLAKE2b-256 checksum How to use checksums |
38a97395194e0a7ad25e14669fd499a5bf062cb9ae3dcba4d4fca8dd398b4061
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 16, 2026.
Transparency log