Basic PTZ Follow now only follows largest "person" object found

- will think of better name later
merge-requests/210/head
Moe 2020-06-07 10:32:44 -07:00
parent b8592c4d4e
commit 2c7fd09c94
3 changed files with 20 additions and 10 deletions

View File

@ -53,6 +53,13 @@ module.exports = function(s,config,lang){
return foundInRegion return foundInRegion
} }
const moveLock = {} 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){ const moveCameraPtzToMatrix = function(event){
if(moveLock[event.ke + event.id])return; if(moveLock[event.ke + event.id])return;
clearTimeout(moveLock[event.ke + event.id]) clearTimeout(moveLock[event.ke + event.id])
@ -64,23 +71,23 @@ module.exports = function(s,config,lang){
var imageCenterX = imgHeight / 2 var imageCenterX = imgHeight / 2
var imageCenterY = imgWidth / 2 var imageCenterY = imgWidth / 2
var matrices = event.details.matrices var matrices = event.details.matrices
var largestMatrix = matrices[0] //for now just get first var largestMatrix = getLargestMatrix(matrices.filter(matrix => matrix.tag === 'person'))
// matrices.forEach((matrix) => { // console.log(matrices.find(matrix => matrix.tag === 'person'))
// matrix if(!largestMatrix)return;
// })
var matrixCenterX = largestMatrix.x + (largestMatrix.width / 2) var matrixCenterX = largestMatrix.x + (largestMatrix.width / 2)
var matrixCenterY = largestMatrix.y + (largestMatrix.height / 2) var matrixCenterY = largestMatrix.y + (largestMatrix.height / 2)
var distanceX = parseFloat(((matrixCenterX - imageCenterX) / 500).toFixed(1)) var rawDistanceX = matrixCenterX - imageCenterX
var distanceY = parseFloat(((matrixCenterY - imageCenterY) / 500).toFixed(1)) var rawDistanceY = matrixCenterY - imageCenterY
var distanceX = parseFloat((rawDistanceX / 500).toFixed(1))
var distanceY = parseFloat((rawDistanceY / 500).toFixed(1))
// console.log('imageCenterX',imageCenterX) // console.log('imageCenterX',imageCenterX)
// console.log('imageCenterY',imageCenterY) // console.log('imageCenterY',imageCenterY)
// console.log('matrixCenterX',matrixCenterX) // console.log('matrixCenterX',matrixCenterX)
// console.log('matrixCenterY',matrixCenterY) // console.log('matrixCenterY',matrixCenterY)
// console.log('rawDistanceX',rawDistanceX)
// console.log('rawDistanceY',rawDistanceY)
// console.log('distanceX',distanceX) // console.log('distanceX',distanceX)
// console.log('distanceY',distanceY) // console.log('distanceY',distanceY)
// if(matrixCenterX < imageCenterX){
//
// }
var axis = [ var axis = [
{direction: 'x', amount: distanceX}, {direction: 'x', amount: distanceX},
{direction: 'y', amount: distanceY}, {direction: 'y', amount: distanceY},

View File

@ -566,6 +566,9 @@ module.exports = function(s,config,lang){
console.log(err) console.log(err)
}); });
}else{ }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){ device.services.ptz.absoluteMove(controlOptions).then(function(err){
msg = {type:'Control Triggered'} msg = {type:'Control Triggered'}
s.userLog(e,msg); s.userLog(e,msg);

View File

@ -54,7 +54,7 @@ module.exports = function(s,config,lang,app,io){
ip = addressRange.join(',') ip = addressRange.join(',')
} }
if(ports === ''){ if(ports === ''){
ports = '80,8080,8000,7575,8081,9080' ports = '80,8080,8000,7575,8081,9080,8090,8999'
} }
if(ports.indexOf('-') > -1){ if(ports.indexOf('-') > -1){
ports = ports.split('-') ports = ports.split('-')