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
|
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},
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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('-')
|
||||||
|
|
Loading…
Reference in New Issue