j.perez
September 12, 2020, 8:02am
1
In a simple program like this:
import jetson.inference
import jetson.utils
net = jetson.inference.detectNet(“ssd-mobilenet-v2”, threshold=0.5)
camera = jetson.utils.videoSource(“csi://0”) # ‘/dev/video0’ for V4L2
display = jetson.utils.videoOutput(“display://0”) # ‘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()))
Are there any way to draw lines, rectangles and circles to the img frame, without using openCV?
Hi,
Jetson_inference has a implementation to overlay input image with a filled rectangle here:
const dim3 blockDim(8, 8);
const dim3 gridDim(iDivUp(overlayWidth,blockDim.x), iDivUp(overlayHeight,blockDim.y));
#define launch_overlay(kernel, type) \
kernel<type><<<gridDim, blockDim>>>((type*)input, inputWidth, inputHeight, (type*)output, outputWidth, outputHeight, x, y)
if( format == IMAGE_RGB8 || format == IMAGE_BGR8 )
launch_overlay(gpuOverlay, uchar3);
else if( format == IMAGE_RGBA8 || format == IMAGE_BGRA8 )
launch_overlay(gpuOverlayAlpha, uchar4);
else if( format == IMAGE_RGB32F || format == IMAGE_BGR32F )
launch_overlay(gpuOverlay, float3);
else if( format == IMAGE_RGBA32F || format == IMAGE_BGRA32F )
launch_overlay(gpuOverlayAlpha, float4);
else if( format == IMAGE_GRAY8 )
launch_overlay(gpuOverlay, uint8_t);
else if( format == IMAGE_GRAY32F )
launch_overlay(gpuOverlay, float);
return CUDA(cudaGetLastError());
You can implement the overlay for lines and circles based on this.
Thanks.