A Python camera interface for the Jetson Nano
A simple to use camera interface for the Jetson Nano for working with USB and CSI cameras in Python.
It currently supports the following types of camera:
- Works with CSI Cameras (Tested and Works)
- Works with various USB cameras (Tested with Logitech USB camera)
- Works with IP Cameras (Future version)
- It is OpenCV ready. Image file can be called directly with OpenCV imshow
- Image file is a numpy RGB array.
- Support different Camera Flip Mode (Counterclockwise, Rotate 180 degress, Clockwise - 90 degrees, Horizontal Flip, Vertical Flip)
- Can be used with multiple cameras
- Support Frame rate enforcement. *Only available for USB cameras.
- It is based on Accelerated GStreamer Plugins
- Should work with other Jetson boards like Jetson TX1, TX2 and others (Not tested)
- Easily read images as
image = camera.read()
This library requires OpenCV to be installed to work.
Installation is simple. Can be installed in two ways with Pip or Manually.
pip3 install nanocamera
git clone https://github.com/thehapyone/NanoCamera cd NanoCamera sudo python3 setup.py install
Usage & Example
Using NanoCamera is super easy. Below we show some usage examples. You can find more in the examples.
Working with CSI Camera
For CSI Cameras, the
camera_type = 0.
Find here for full CSI camera example
Python Example - Create CSI camera using default FPS=30, default image size: 640 by 480 and with no rotation (flip=0)
import nanocamera as nano # Create the Camera instance for 640 by 480 camera = nano.Camera()
Customizing the width and height
import nanocamera as nano # Create the Camera instance for No rotation (flip=0) with size of 1280 by 800 camera = nano.Camera(flip=0, width=1280, height=800, fps=30)
if image is inverted, set
flip = 2
Working with USB Camera
For USB Cameras, set the
camera_type = 1, and set the
device_id as well
Find here for full USB camera example
Python Example -
Create USB camera connected to
import nanocamera as nano # Create the Camera instance for No rotation (flip=0) with size of 640 by 480 camera = nano.Camera(camera_type=1, device_id=1, width=640, height=480, fps=30)
Enable frame rate enforcement i.e force the camera to work at the given frame rate
import nanocamera as nano # enforce the capture frame rate with the enforce_fps=True camera = nano.Camera(camera_type=1, device_id=1, width=640, height=480, fps=30, enforce_fps=True)
You can see connected USB cameras by running :
# for usb camera /dev/video2, the device_id will be 2
read() to read the latest image as a
numpy.ndarray. The color format is
frame = camera.read()
A Simple program to read from the CSI camera and display with OpenCV
import cv2 #from nanocamera.NanoCam import Camera import nanocamera as nano if __name__ == '__main__': # Create the Camera instance camera = nano.Camera(flip=0, width=640, height=480, fps=30) print('CSI Camera is now ready') while True: try: # read the camera image frame = camera.read() # display the frame cv2.imshow("Video Frame", frame) if cv2.waitKey(25) & 0xFF == ord('q'): break except KeyboardInterrupt: break # close the camera instance camera.release() # remove camera object del camera
- Platooning Robot - Resources for building collaborative robots
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size||File type||Python version||Upload date||Hashes|
|Filename, size nanocamera-0.1.2-py3-none-any.whl (5.2 kB)||File type Wheel||Python version py3||Upload date||Hashes View hashes|
|Filename, size nanocamera-0.1.2.tar.gz (4.2 kB)||File type Source||Python version None||Upload date||Hashes View hashes|
Hashes for nanocamera-0.1.2-py3-none-any.whl