offline_stores_try_on / util /camera_util.py
Ali Mohsin
feat: Add virtual try-on system components including DensePose, SMPL, and pix2pixHD models, rendering, and utilities.
5db43ff
import cv2
import os
import subprocess
def list_available_cameras(max_devices=10):
available = []
for i in range(max_devices):
cap = cv2.VideoCapture(i)
if cap.read()[0]:
cap.release()
name = get_camera_name_linux(i)
available.append((i, name))
else:
cap.release()
return available
def get_camera_name_linux(index):
try:
device = f"/dev/video{index}"
result = subprocess.run(["v4l2-ctl", "-d", device, "--info"],
stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, text=True)
for line in result.stdout.splitlines():
if "Card type" in line:
return line.split(":", 1)[1].strip()
except Exception:
pass
return "Unknown Camera"
def main():
cameras = list_available_cameras()
if not cameras:
print("No cameras found.")
return
print("Available cameras:")
for idx, (cam_id, name) in enumerate(cameras):
print(f"[{cam_id}] {name}")
selected = int(input("Select camera by ID: "))
cap = cv2.VideoCapture(selected)
if not cap.isOpened():
print("Failed to open the selected camera.")
return
print("Press 'q' to quit.")
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow(f"Camera {selected}", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
if __name__ == "__main__":
main()