How to get letter from keyboard

Hi how close the streaming with key like

if cv2.waitKey(25) & 0xFF==ord('q'):
        break

i want to close this stream while hit a button

import jetson.inference
import jetson.utils
import time

net = jetson.inference.detectNet("ssd-mobilenet-v2", threshold=0.5)
camera = jetson.utils.videoSource("/dev/video1")      # '/dev/video0' for V4L2
display = jetson.utils.videoOutput("") # 'my_video.mp4' for file

while display.IsStreaming():
	img = camera.Capture()
	detections = net.Detect(img)
	display.Render(img)
	display.SetStatus("Object Detection | Network {:.0f} FPS".format(net.GetNetworkFPS()))

when import cv2 to Streaming code that @dusty_nv share, it doesn’t run

Hi @savunmasad, you can import cv2 after the display = jetson.utils.videoOutput(""), and it should still create the OpenGL window then. It seems that when cv2 is imported, it loads a conflicting GL/GLX extension manager, but if the window is created beforehand it’s fine.

By default, the window will close when you press the Escape key. If you want to change that key, you can do so on this line of code from jetson-inference/utils/display/glDisplay.cpp:1305

https://github.com/dusty-nv/jetson-utils/blob/833fc7998e34d852672277730a11aeed90024959/display/glDisplay.cpp#L1305

If you make a change in the C++ code, re-compile and re-install it with these steps:

$ cd jetson-inference/build
$ make
$ sudo make install

Thank you.
By the way how can i add new features for example

Save the video pressing a key or etc.

Unfortunately I don’t have the event handling exposed via the Python bindings, so you would add them to the C++ version of the handler, or you could use cv2.waitKey() if you can get that working.

Alternatively, you could use another Python library to get the keyboard input. In the past I have used the pynput library:

https://pynput.readthedocs.io/en/latest/index.html

1 Like