org.kurento.demo.CrowdDetectorOrionPublisher Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kurento-crowddetector Show documentation
Show all versions of kurento-crowddetector Show documentation
A Crowd Detector Filter using RTSP conexion to the camera.
The video will be recorded.
/*
* (C) Copyright 2014 Kurento (http://kurento.org/)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.kurento.demo;
import static com.google.common.collect.Lists.newArrayListWithCapacity;
import java.util.Collection;
import java.util.List;
import org.kurento.module.crowddetector.CrowdDetectorDirectionEvent;
import org.kurento.module.crowddetector.CrowdDetectorFluidityEvent;
import org.kurento.module.crowddetector.CrowdDetectorOccupancyEvent;
import org.kurento.module.crowddetector.RegionOfInterest;
import org.kurento.orion.OrionConnector;
import org.kurento.orion.entities.OrionAttribute;
import org.kurento.orion.entities.OrionContextElement;
import org.springframework.beans.factory.annotation.Autowired;
/**
*
* @author Ivan Gracia ([email protected])
*
*/
public class CrowdDetectorOrionPublisher {
public static final String LEVEL_ATTR = "Level";
public static final String PERCENTAGE_ATTR = "Percentage";
public static final String DIRECTION_ATTR = "Direction";
@Autowired
private OrionConnector orionConnector;
public void publishEvent(CrowdDetectorDirectionEvent event) {
OrionContextElement contextElement = directionEventToContextElement(event);
this.orionConnector.updateContextElements(contextElement);
}
public void publishEvent(CrowdDetectorFluidityEvent event) {
OrionContextElement contextElement = fluidityEventToContextElement(event);
this.orionConnector.updateContextElements(contextElement);
}
public void publishEvent(CrowdDetectorOccupancyEvent event) {
OrionContextElement contextElement = occupancyEventToContextElement(event);
this.orionConnector.updateContextElements(contextElement);
}
public void registerRoisInOrion(Collection rois) {
List events = newArrayListWithCapacity(rois.size());
for (RegionOfInterest roi : rois) {
events.add(occupancyEventToContextElement(roi.getId()));
events.add(directionEventToContextElement(roi.getId()));
events.add(fluidityEventToContextElement(roi.getId()));
}
this.orionConnector
.registerContextElements(events.toArray(new OrionContextElement[events.size()]));
}
private static OrionContextElement occupancyEventToContextElement(String roiId) {
OrionContextElement contextElement = new OrionContextElement();
contextElement.setId(roiId);
contextElement.setPattern(false);
contextElement.setType(CrowdDetectorOccupancyEvent.class.getSimpleName());
OrionAttribute attrLevel =
new OrionAttribute<>(LEVEL_ATTR, Integer.class.getSimpleName(), Integer.valueOf(0));
OrionAttribute attrPercentage =
new OrionAttribute<>(PERCENTAGE_ATTR, Float.class.getSimpleName(), 0F);
contextElement.getAttributes().add(attrLevel);
contextElement.getAttributes().add(attrPercentage);
return contextElement;
}
private static OrionContextElement occupancyEventToContextElement(
CrowdDetectorOccupancyEvent event) {
OrionContextElement contextElement = new OrionContextElement();
contextElement.setId(event.getRoiID());
contextElement.setType(event.getClass().getSimpleName());
OrionAttribute attrLevel =
new OrionAttribute<>(LEVEL_ATTR, Integer.class.getSimpleName(), event.getOccupancyLevel());
OrionAttribute attrPercentage = new OrionAttribute<>(PERCENTAGE_ATTR,
Float.class.getSimpleName(), event.getOccupancyPercentage());
contextElement.getAttributes().add(attrLevel);
contextElement.getAttributes().add(attrPercentage);
return contextElement;
}
private static OrionContextElement fluidityEventToContextElement(String roiId) {
OrionContextElement contextElement = new OrionContextElement();
contextElement.setId(roiId);
contextElement.setPattern(false);
contextElement.setType(CrowdDetectorFluidityEvent.class.getSimpleName());
OrionAttribute attrLevel =
new OrionAttribute<>(LEVEL_ATTR, Integer.class.getSimpleName(), Integer.valueOf(0));
OrionAttribute attrPercentage =
new OrionAttribute<>(PERCENTAGE_ATTR, Float.class.getSimpleName(), 0F);
contextElement.getAttributes().add(attrLevel);
contextElement.getAttributes().add(attrPercentage);
return contextElement;
}
private static OrionContextElement fluidityEventToContextElement(
CrowdDetectorFluidityEvent event) {
OrionContextElement contextElement = new OrionContextElement();
contextElement.setId(event.getRoiID());
contextElement.setType(event.getClass().getSimpleName());
OrionAttribute attrLevel =
new OrionAttribute<>(LEVEL_ATTR, Integer.class.getSimpleName(), event.getFluidityLevel());
OrionAttribute attrPercentage = new OrionAttribute<>(PERCENTAGE_ATTR,
Float.class.getSimpleName(), event.getFluidityPercentage());
contextElement.getAttributes().add(attrLevel);
contextElement.getAttributes().add(attrPercentage);
return contextElement;
}
private static OrionContextElement directionEventToContextElement(String roiId) {
OrionContextElement contextElement = new OrionContextElement();
contextElement.setId(roiId);
contextElement.setPattern(false);
contextElement.setType(CrowdDetectorDirectionEvent.class.getSimpleName());
OrionAttribute directionAttribute =
new OrionAttribute<>(DIRECTION_ATTR, Float.class.getSimpleName(), Float.valueOf(0));
contextElement.getAttributes().add(directionAttribute);
return contextElement;
}
private static OrionContextElement directionEventToContextElement(
CrowdDetectorDirectionEvent event) {
OrionContextElement contextElement = new OrionContextElement();
contextElement.setId(event.getRoiID());
contextElement.setType(event.getClass().getSimpleName());
OrionAttribute directionAttribute = new OrionAttribute<>(DIRECTION_ATTR,
Float.class.getSimpleName(), event.getDirectionAngle());
contextElement.getAttributes().add(directionAttribute);
return contextElement;
}
}