记得上下班打卡 | git大法好,push需谨慎

Commit 54a35968 authored by jiangxiulong's avatar jiangxiulong

人体检测-截图回调

parent c1694c00
package com.liquidnet.service.kylin.dto.vo;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 人流量排队检测摄像头截图回调
* </p>
*
* @author jiangxiulong
* @since 2022-01-14
*/
@Data
@ApiModel
public class KylinCameraDeviceCallBackVo implements Serializable {
private static final long serialVersionUID = -7824619649886426754L;
private String OssObject;
private String SnapshotUrl;
private String Event;
private String StreamName;
private String CreateTime;
private String Height;
private String DomainName;
private String OssEndpoint;
private String AppName;
private String Width;
private String OssBucket;
private String Size;
/*{
"OssObject":"��������ؽ�ͼ/live/20220101202301070001.jpg",
"SnapshotUrl":"http://zhengzai-live.oss-cn-beijing.aliyuncs.com/��������ؽ�ͼ/live/20220101202301070001.jpg",
"Event":"Snapshot",
"StreamName":"20220101202301070001",
"CreateTime":"2022-01-10T11:35:21Z",
"Height":"1080",
"DomainName":"image.zhengzai.tv",
"OssEndpoint":"oss-cn-beijing.aliyuncs.com",
"AppName":"live",
"Width":"1920",
"OssBucket":"zhengzai-live",
"Size":"115657"
}*/
}
......@@ -24,6 +24,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.KylinApiCameraDevicesVo;
import com.liquidnet.service.kylin.dto.vo.KylinCameraDeviceCallBackVo;
import com.liquidnet.service.kylin.dto.vo.KylinCameraDevicesVo;
import com.liquidnet.service.kylin.entity.KylinCamera;
import com.liquidnet.service.kylin.entity.KylinCameraRecord;
......@@ -89,6 +90,15 @@ public class KylinCameraController {
log.info("接收截图回调请求:[siteType=[{}], fieldId=[{}], requestBody=[{}]",
siteType, fieldId, requestBody);
// TODO: 2022/1/10 jxltodo 验签
ObjectMapper configure = JsonUtils.OM().configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);
KylinCameraDeviceCallBackVo backVo = configure.readValue(
JsonUtils.toJson(requestBody),
new TypeReference<KylinCameraDeviceCallBackVo>() {
}
);
KylinCamera cameraDeviceInfo = dataUtils.getCameraDeviceInfo(backVo.getStreamName());
this.getPersonNum(cameraDeviceInfo);
return "success";
} catch (Exception e) {
log.error("截图回调Exception:[msg={}, e={}]", e.getMessage(), e);
......@@ -195,50 +205,56 @@ public class KylinCameraController {
log.info("人体识别-查询设备列表->耗时:{}", (startTime2 - startTime1) + "毫秒");
if (!CollectionUtils.isEmpty(cameraList)) {
for (KylinCamera kylinCamera : cameraList) {
try {
InputStream inputStream = ViapiFileUtilAdvance.buildInputStream(kylinCamera.getImgUrl());
ViapiFileUtilAdvance fileUtils = ViapiFileUtilAdvance.getInstance(accessKeyId, accessKeySecret, "cn-beijing");
String ossTempFileUrl = fileUtils.upload(inputStream);
long startTime3 = System.currentTimeMillis();
log.info("人体识别-upload->耗时:{}", (startTime3 - startTime2) + "毫秒");
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
DetectPedestrianRequest request = new DetectPedestrianRequest();
request.setImageURL(ossTempFileUrl);
DetectPedestrianResponse response = client.getAcsResponse(request);
long startTime4 = System.currentTimeMillis();
log.info("人体识别-client->耗时:{}", (startTime4 - startTime3) + "毫秒");
List<DetectPedestrianResponse.Data.Element> elementList = response.getData().getElements();
long count = elementList.stream().filter(r -> r.getScore() > 0.5).count();
long count1 = elementList.stream().filter(r -> r.getScore() <= 0.5).count();
log.info("人体识别-count1:{}", count1);
long startTime5 = System.currentTimeMillis();
KylinCameraRecord cameraRecord = KylinCameraRecord.getNew();
cameraRecord.setCameraRecordId(IDGenerator.nextSnowId());
cameraRecord.setCameraId(kylinCamera.getCameraId());
cameraRecord.setPersonNum((int) count);
recordMapper.insert(cameraRecord);
/*LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("kylin_camera_record.insert"));
sqlsDataA.add(new Object[]{
IDGenerator.nextSnowId(), kylinCamera.getCameraId(), (int) count
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_ANSWER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));*/
long startTime6 = System.currentTimeMillis();
log.info("人体识别-MapperInsert->耗时:{}", (startTime6 - startTime5) + "毫秒");
dataUtils.setCameraDevicePersonNum(kylinCamera.getCameraId(), count);
} catch (Exception e) {
log.error("获取设备列表Exception:[msg={}, e={}]", e.getMessage(), e);
}
this.getPersonNum(kylinCamera);
}
}
return ResponseDto.success();
}
private void getPersonNum(KylinCamera kylinCamera) {
try {
long startTime22 = System.currentTimeMillis();
InputStream inputStream = ViapiFileUtilAdvance.buildInputStream(kylinCamera.getImgUrl());
ViapiFileUtilAdvance fileUtils = ViapiFileUtilAdvance.getInstance(accessKeyId, accessKeySecret, "cn-beijing");
String ossTempFileUrl = fileUtils.upload(inputStream);
long startTime3 = System.currentTimeMillis();
log.info("人体识别-upload->耗时:{}", (startTime3 - startTime22) + "毫秒");
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", accessKeyId, accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
DetectPedestrianRequest request = new DetectPedestrianRequest();
request.setImageURL(ossTempFileUrl);
DetectPedestrianResponse response = client.getAcsResponse(request);
long startTime4 = System.currentTimeMillis();
log.info("人体识别-client->耗时:{}", (startTime4 - startTime3) + "毫秒");
List<DetectPedestrianResponse.Data.Element> elementList = response.getData().getElements();
long count = elementList.stream().filter(r -> r.getScore() > 0.5).count();
long count1 = elementList.stream().filter(r -> r.getScore() <= 0.5).count();
log.info("人体识别-count1:{}", count1);
long startTime5 = System.currentTimeMillis();
KylinCameraRecord cameraRecord = KylinCameraRecord.getNew();
cameraRecord.setCameraRecordId(IDGenerator.nextSnowId());
cameraRecord.setCameraId(kylinCamera.getCameraId());
cameraRecord.setPersonNum((int) count);
recordMapper.insert(cameraRecord);
/*LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqls.add(SqlMapping.get("kylin_camera_record.insert"));
sqlsDataA.add(new Object[]{
IDGenerator.nextSnowId(), kylinCamera.getCameraId(), (int) count
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_ANSWER_INSERT.getKey(),
SqlMapping.gets(sqls, sqlsDataA));*/
long startTime6 = System.currentTimeMillis();
log.info("人体识别-MapperInsert->耗时:{}", (startTime6 - startTime5) + "毫秒");
dataUtils.setCameraDevicePersonNum(kylinCamera.getCameraId(), count);
} catch (Exception e) {
log.error("人体识别Exception:[msg={}, e={}]", e.getMessage(), e);
}
}
}
......@@ -474,4 +474,14 @@ public class DataUtils {
String redisKey = KylinRedisConst.CAMERA_DEVICE_GB_INFO.concat(camera.getGbId());
redisDataSourceUtil.getRedisKylinUtil().set(redisKey, camera);
}
public KylinCamera getCameraDeviceInfo(String streamName) {
String redisKey = KylinRedisConst.CAMERA_DEVICE_GB_INFO.concat(streamName);
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(redisKey);
if (null == obj) {
return null;
} else {
return (KylinCamera) obj;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment