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
Release history Release notifications | RSS feed
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.3.tar.gz
(80.9 kB
view details)
Built Distribution
File details
Details for the file camera-util-1.1.3.tar.gz
.
File metadata
- Download URL: camera-util-1.1.3.tar.gz
- Upload date:
- Size: 80.9 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ba5b06c931d2fa8bb19291e4fd9e0d58cee9615de87ffa072cd7f5c429aae06 |
|
MD5 | cd84254cf47193035288ded04af53ffc |
|
BLAKE2b-256 | d4fe2333e69039547531c44d602f87d3159adfb6b012f471fb2824670f585835 |
File details
Details for the file camera_util-1.1.3-py2.py3-none-any.whl
.
File metadata
- Download URL: camera_util-1.1.3-py2.py3-none-any.whl
- Upload date:
- Size: 59.3 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7507aa3d80a23618cb231c4ddaafd3b0926ed2d2d79ff4c6ebc78aab5ec59a87 |
|
MD5 | b13e8f3624a6db5ac21e405fd351e46c |
|
BLAKE2b-256 | 04c08d436c6e643fa6726276f384cc4fa63fa0888a533cea4e14624387320339 |