Skip to main content

Python wrapper for USB, blackfly, Raspi, Jetson Nano cameras. Works on Windows, Raspian (inlc Bullseye), JetsonNano, MacOS

Project description

A collection of python threaded camera support routines for

  • USB and laptop internal webcams

  • RTSP streams

  • MIPI CSI cameras (Raspberry Pi, Jetson Nano)

  • FLIR blackfly USB camera

Save data as, HDF5, TIFF, AVI, MKV

Works on most platforms: Windows, MacOS, Unix

For detailed documentation please Readme.md.

Example program using camera

import cv2
import logging
import time

configs = {
 'camera_res'      : (1920, 1080),   # CAP_PROP_FRAME_WIDTH, CAP_PROP_FRAME_HEIGHT
 'exposure'        : -6,             # depends on camera: e.g. -5 =(2^-5)=1/32,
                                     # 0=auto, 1...max=frame interval in microseconds
 'autoexposure'    : 3.0,            # depends on camera: 0.25 or 0.75(auto), -1,0,1
 'fps'             : 30,             # fps
 'fourcc'          : "MJPG",         # cv2 camera only: MJPG, YUY2, YUYV
 'buffersize'      : -1,             # default is 4 for V4L2, max 10,
 'output_res'      : (-1, -1),       # output resolution (-1=no change)
 'flip'            : 0,              # 0=no rotation
 'displayfps'      : 5               # frame rate for display server
}

if configs['displayfps'] >= configs['fps']: display_interval = 0
else: display_interval = 1.0/configs['displayfps']

# Open display window
cv2.namedWindow('Camera', cv2.WINDOW_AUTOSIZE) # or WINDOW_NORMAL

# Setting up logging
logging.basicConfig(level=logging.DEBUG) # options are: DEBUG, INFO, ERROR, WARNING
logger = logging.getLogger("Main")

# Setting up storage
from camera.streamer.mkvstorageserver import mkvServer
mkv = mkvServer("C:\\temp\\" + "Test.mkv", configs['fps'], configs['camera_res'])
mkv.start()

# Create camera interface
from camera.capture.cv2capture import cv2Capture
camera = cv2Capture(configs, 0)
camera.start()

stop = False
while(not stop):
   current_time = time.time()

   # Wait for new image
   (frame_time, frame) = camera.capture.get(block=True, timeout=None)
   # take care of camera log messages
   while not camera.log.empty():
      (level, msg)=camera.log.get_nowait()
      logger.log(level, msg)


   # Put image into storage queue
   if not mkv.queue.full():
      mkv.queue.put_nowait((frame_time, frame))
   # take care of storage log messages
   while not mkv.log.empty():
      (level, msg)=mkv.log.get_nowait()
      logger.log(level, msg)

   # Display
   if (current_time - last_display) >= display_interval:
      cv2.imshow('Camera', frame)
      if cv2.waitKey(1) & 0xFF == ord('q'): stop = True
      if cv2.getWindowProperty('Camera', 0) < 0: stop = True
      last_display = current_time

   # Do other things

# Clean up
camera.stop()
mkv.stop()
cv2.destroyAllWindows()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

camera-util-1.1.5.tar.gz (87.1 kB view details)

Uploaded Source

Built Distribution

camera_util-1.1.5-py2.py3-none-any.whl (63.1 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file camera-util-1.1.5.tar.gz.

File metadata

  • Download URL: camera-util-1.1.5.tar.gz
  • Upload date:
  • Size: 87.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for camera-util-1.1.5.tar.gz
Algorithm Hash digest
SHA256 436fef503e9c4d4ff0981f1bb2f3aafca28f6e8eb36b851234d55282c79ec1ae
MD5 d9c45c5348dc743909063e6a3bc19fde
BLAKE2b-256 ec6456daa4b172f13a898aec4e70557c5d6cf048cf773c572bc30b82c6389903

See more details on using hashes here.

File details

Details for the file camera_util-1.1.5-py2.py3-none-any.whl.

File metadata

  • Download URL: camera_util-1.1.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 63.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.5.0 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for camera_util-1.1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1f88e5ecf604777ce93095256cc3bb3ea4f43812e7eb05ee0ec68e7a64667414
MD5 a53beb1f2d0ca66f9a0a1af960d96248
BLAKE2b-256 9c4a8b4398ddcf623acd6bf326708769e0d37a7107ff3fa8d288bbbc0bc85f6f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page