ThingNN : Multi object detection and classify

更新时间:
2024-05-15
下载文档

ThingNN : Multi object detection and classify

The thingnn module provides thing detection and recognition function.

User can use the following code to import the thingnn module.

var thingnn = require('thingnn');

Support

The following shows thingnn module APIs available for each permissions.

 User ModePrivilege Mode
thingnn.detect
thingnn.identify

thingnn Object

thingnn.detect(videoBuf, attribute)

  • videoBuf {Buffer} Video buffer.
  • attribute {Object} Video attribute.
  • Returns: {Array} Thing info objects array which detectd.

Detect thing infos in given video buffer.

The video attribute attribute object contains the following members:

  • width {Integer} Video width.
  • height {Integer} Video height.
  • pixelFormat {Integer} Pixel format.

pixelFormat is a integer, can be:

ValueDescription
thingnn.PIX_FMT_BGR24BGR24 pixel format.
thingnn.PIX_FMT_RGB2BGR24RGB24 to BGR24 pixel format.
thingnn.PIX_FMT_GRAY2BGR24Grayscale to BGR24 pixel format.
thingnn.PIX_FMT_RGBA2BGR24RGBA to BGR24 pixel format.

The returned thing info object contains the following members:

  • className {String} Thing class name.
  • prob {Number} Probability 0.0 ~ 1.0.
  • x0 {Integer} x position of upper left corner.
  • y0 {Integer} y position of upper left corner.
  • x1 {Integer} x position of lower right corner.
  • y1 {Integer} y position of lower right corner.

className is a string, can be: background, aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, sofa, train, tvmonitor.

thingnn.identify(videoBuf, attribute, thingInfo)

  • videoBuf {Buffer} Video buffer.
  • attribute {Object} Video attribute.
  • thingInfo {Object} Thing info object.
  • Returns: {String} Thing name.

Identify the name of given thing info.

Example

This example show how to detect and identify thing.

var MediaDecoder = require('mediadecoder');
var iosched = require('iosched');
var thingnn = require('thingnn');

var netcam = new MediaDecoder().open('rtsp://admin:admin@10.4.0.12');

netcam.destVideoFormat({width: 640, height: 360, fps: 1, pixelFormat: MediaDecoder.PIX_FMT_BGR24, noDrop: false, disable: false});
netcam.destAudioFormat({disable: true});
netcam.previewFormat({enable: true, fb: 0, fps: 25, fullscreen: false});

var ol = netcam.overlay();
var quited = false;

netcam.on('video', (video) => {
  var buf = new Buffer(video.arrayBuffer);
  var thingInfo = thingnn.detect(buf, {width: 640, height: 360, pixelFormat: thingnn.PIX_FMT_BGR24});

  ol.clear();
  if (thingInfo.length) {
    ol.font(ol.F8X12);
    for (var i = 0; i < thingInfo.length; i++) {
      var thingName = thingnn.identify(buf, {width: 640, height: 360, pixelFormat: thingnn.PIX_FMT_BGR24}, thingInfo[i]);

      ol.text(thingInfo[i].x0, thingInfo[i].y0, thingInfo[i].className, MediaDecoder.C_RED);
      ol.text(thingInfo[i].x0, thingInfo[i].y0 + 20, thingName, MediaDecoder.C_RED);
      ol.rect(thingInfo[i].x0, thingInfo[i].y0, thingInfo[i].x1, thingInfo[i].y1, MediaDecoder.C_RED, 2, 0, false);
    }
  }
});

netcam.on('eof', () => {
  quited = true;
});

netcam.start();

while (!quited) {
  iosched.poll(); // Event poll.
}

netcam.close();
文档内容是否对您有所帮助?
有帮助
没帮助