-
Notifications
You must be signed in to change notification settings - Fork 3
/
baidu-face.js
121 lines (106 loc) · 3.83 KB
/
baidu-face.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
const Baidu = require('./lib/Baidu')
module.exports = RED => {
// 人脸识别
RED.nodes.registerType('baidu-face', class {
constructor(config) {
const node = this
RED.nodes.createNode(node, config)
const baiduface = RED.nodes.getNode(config.baiduface)
node.on('input', async data => {
try {
const bd = new Baidu(node, baiduface)
// 合并值,未细想
for (const key in config) { if (config[key] != '' && config[key] != null) { data[key] = config[key] } }
data.max_face_num = data.max_face_num || 5
data.max_score = data.max_score || 70
data.user_list = data.user_list || {}
// 人脸识别
const userInfo = await bd.searchFace(data)
data.payload = userInfo
node.status({ text: `识别成功:${data._msgid}` })
node.send([data, null])
} catch (err) {
node.status({ text: err.message, fill: 'red', shape: 'ring' })
node.warn(err)
data.payload = {}
data.error_msg = err.message
node.send([null, data])
}
})
}
})
// 人流量统计
RED.nodes.registerType('baidu-body-num', class {
constructor(config) {
const node = this
RED.nodes.createNode(node, config)
const baiduface = RED.nodes.getNode(config.baiduface)
node.on('input', async data => {
try {
const bd = new Baidu(node, baiduface)
// 合并值,未细想
for (const key in config) { if (config[key] != '' && config[key] != null) { data[key] = config[key] } }
// 人流量统计
const personInfo = await bd.bodyNum(data)
data.payload = personInfo
node.status({ text: `识别成功:${data._msgid}` })
node.send([data, null])
} catch (err) {
node.status({ text: err.message, fill: 'red', shape: 'ring' })
node.warn(err)
data.error_msg = err.message
}
})
}
})
// 人流量统计(动态版)
RED.nodes.registerType('baidu-dynamic-body-num', class {
constructor(config) {
const node = this
RED.nodes.createNode(node, config)
const baiduface = RED.nodes.getNode(config.baiduface)
node.on('input', async data => {
try {
const bd = new Baidu(node, baiduface)
// 合并值,未细想
for (const key in config) { if (config[key] != '' && config[key] != null) { data[key] = config[key] } }
//人流量统计(动态版)
const personInfo = await bd.dynamicDodyNum(data)
data.payload = personInfo
node.status({ text: `识别成功:${data._msgid}` })
node.send([data, null])
} catch (err) {
node.status({ text: err.message, fill: 'red', shape: 'ring' })
node.warn(err)
data.error_msg = err.message
}
})
}
})
//人体检测和属性识别
RED.nodes.registerType('baidu-body-attr', class {
constructor (config) {
const node = this
RED.nodes.createNode(node, config)
const baiduface = RED.nodes.getNode(config.baiduface)
node.on('input', async data => {
try {
const bd = new Baidu(node, baiduface)
// 合并值,未细想
for (const key in config) { if (config[key] != '' && config[key] != null) { data[key] = config[key] } }
// 人体检测和属性识别
const personInfo = await bd.bodyAttr(data)
data.payload = personInfo
node.status({ text: `识别成功:${data._msgid}` })
node.send([data, null])
} catch (err) {
node.status({ text: err.message, fill: 'red', shape: 'ring' })
node.warn(err)
data.payload = {}
data.error_msg = err.message
node.send([null ,data])
}
})
}
})
}