Basic PTZ Follow now only follows largest "person" object found
- will think of better name latermerge-requests/210/head
parent
b8592c4d4e
commit
2c7fd09c94
|
@ -53,6 +53,13 @@ module.exports = function(s,config,lang){
|
|||
return foundInRegion
|
||||
}
|
||||
const moveLock = {}
|
||||
const getLargestMatrix = (matrices) => {
|
||||
var largestMatrix = {width: 0, height: 0}
|
||||
matrices.forEach((matrix) => {
|
||||
if(matrix.width > largestMatrix.width && matrix.height > largestMatrix.height)largestMatrix = matrix
|
||||
})
|
||||
return largestMatrix.x ? largestMatrix : null
|
||||
}
|
||||
const moveCameraPtzToMatrix = function(event){
|
||||
if(moveLock[event.ke + event.id])return;
|
||||
clearTimeout(moveLock[event.ke + event.id])
|
||||
|
@ -64,23 +71,23 @@ module.exports = function(s,config,lang){
|
|||
var imageCenterX = imgHeight / 2
|
||||
var imageCenterY = imgWidth / 2
|
||||
var matrices = event.details.matrices
|
||||
var largestMatrix = matrices[0] //for now just get first
|
||||
// matrices.forEach((matrix) => {
|
||||
// matrix
|
||||
// })
|
||||
var largestMatrix = getLargestMatrix(matrices.filter(matrix => matrix.tag === 'person'))
|
||||
// console.log(matrices.find(matrix => matrix.tag === 'person'))
|
||||
if(!largestMatrix)return;
|
||||
var matrixCenterX = largestMatrix.x + (largestMatrix.width / 2)
|
||||
var matrixCenterY = largestMatrix.y + (largestMatrix.height / 2)
|
||||
var distanceX = parseFloat(((matrixCenterX - imageCenterX) / 500).toFixed(1))
|
||||
var distanceY = parseFloat(((matrixCenterY - imageCenterY) / 500).toFixed(1))
|
||||
var rawDistanceX = matrixCenterX - imageCenterX
|
||||
var rawDistanceY = matrixCenterY - imageCenterY
|
||||
var distanceX = parseFloat((rawDistanceX / 500).toFixed(1))
|
||||
var distanceY = parseFloat((rawDistanceY / 500).toFixed(1))
|
||||
// console.log('imageCenterX',imageCenterX)
|
||||
// console.log('imageCenterY',imageCenterY)
|
||||
// console.log('matrixCenterX',matrixCenterX)
|
||||
// console.log('matrixCenterY',matrixCenterY)
|
||||
// console.log('rawDistanceX',rawDistanceX)
|
||||
// console.log('rawDistanceY',rawDistanceY)
|
||||
// console.log('distanceX',distanceX)
|
||||
// console.log('distanceY',distanceY)
|
||||
// if(matrixCenterX < imageCenterX){
|
||||
//
|
||||
// }
|
||||
var axis = [
|
||||
{direction: 'x', amount: distanceX},
|
||||
{direction: 'y', amount: distanceY},
|
||||
|
|
|
@ -566,6 +566,9 @@ module.exports = function(s,config,lang){
|
|||
console.log(err)
|
||||
});
|
||||
}else{
|
||||
controlOptions.Speed = {'x': 1, 'y': 1, 'z': 1}
|
||||
controlOptions.Position = Object.assign(controlOptions.Velocity,{})
|
||||
delete(controlOptions.Velocity)
|
||||
device.services.ptz.absoluteMove(controlOptions).then(function(err){
|
||||
msg = {type:'Control Triggered'}
|
||||
s.userLog(e,msg);
|
||||
|
|
|
@ -54,7 +54,7 @@ module.exports = function(s,config,lang,app,io){
|
|||
ip = addressRange.join(',')
|
||||
}
|
||||
if(ports === ''){
|
||||
ports = '80,8080,8000,7575,8081,9080'
|
||||
ports = '80,8080,8000,7575,8081,9080,8090,8999'
|
||||
}
|
||||
if(ports.indexOf('-') > -1){
|
||||
ports = ports.split('-')
|
||||
|
|
Loading…
Reference in New Issue