Merge remote-tracking branch 'origin/main'
commit
b249456cf1
|
|
@ -35,14 +35,14 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
|
||||
#region 大华算法
|
||||
//分析两次航线图片
|
||||
public async Task<Response<List<dynamic>>> BehaviorAlarm(string firstId, string secondId)
|
||||
public async Task<Response<List<dynamic>>> BehaviorAlarm(string firstId, string secondId, string cdid)
|
||||
{
|
||||
using (var db = UnitWork.CreateContext())
|
||||
{
|
||||
//var imageList1 = await db.LasaMediaFile.AsQueryable().Where(r => r.TaskId == firstId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).ToListAsync();
|
||||
//var imageList2 = await db.LasaMediaFile.AsQueryable().Where(r => r.TaskId == secondId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).ToListAsync();
|
||||
var imageList1 = await db.LasaMediaFile.AsQueryable().Where(r => r.Id == firstId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).ToListAsync();
|
||||
var imageList2 = await db.LasaMediaFile.AsQueryable().Where(r => r.Id == secondId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).ToListAsync();
|
||||
var imageList1 = await db.LasaMediaFile.AsQueryable().Where(r => r.TaskId == firstId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).OrderBy(r=>r.CreateTime).ToListAsync();
|
||||
var imageList2 = await db.LasaMediaFile.AsQueryable().Where(r => r.TaskId == secondId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).OrderBy(r => r.CreateTime).ToListAsync();
|
||||
//var imageList1 = await db.LasaMediaFile.AsQueryable().Where(r => r.Id == firstId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).ToListAsync();
|
||||
//var imageList2 = await db.LasaMediaFile.AsQueryable().Where(r => r.Id == secondId && r.AbsoluteAltitude != 0 && r.AbsoluteAltitude != null).ToListAsync();
|
||||
List<dynamic> dataList = new List<dynamic>();
|
||||
for (int i = 0; i < imageList1.Count; i++)
|
||||
{
|
||||
|
|
@ -57,6 +57,7 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
taskId = "8ab0e1e213234a848e20d0d335559786",
|
||||
capTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
||||
taskTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
||||
cdid = cdid,
|
||||
imageInfo = new
|
||||
{
|
||||
imgSize = 1667235,
|
||||
|
|
@ -79,6 +80,7 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
pitch = imageList1[i].GimbalPitchDegree,
|
||||
roll = imageList1[i].GimbalRollDegree,
|
||||
focalLength = imageList1[i].FocalLength
|
||||
|
||||
},
|
||||
new {
|
||||
imgUrl = "http://175.27.168.120:6013/test/"+imageList2[i].ObjectKey,
|
||||
|
|
@ -107,48 +109,89 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
}
|
||||
public async Task<Response<bool>> AddDaHuaImg(string info)
|
||||
{
|
||||
Console.WriteLine(info);
|
||||
using (var db = UnitWork.CreateContext())
|
||||
{
|
||||
var data = JsonConvert.DeserializeObject<dynamic>(info);
|
||||
string detectRegionJson = JsonConvert.SerializeObject(data.info.detectRegion);
|
||||
var regionArray = JsonConvert.DeserializeObject<dynamic>(detectRegionJson);
|
||||
LasaAiAchievement lasaAiAchievement = new LasaAiAchievement
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Title = "耕地破坏区域报警",
|
||||
CreateTime = DateTime.Now,
|
||||
AiModel = "DaHuaAi"
|
||||
};
|
||||
string cdid = data.cdid.ToString();
|
||||
var oldinfo = await db.LasaAiAchievement.GetFirstAsync(r => r.TaskId == cdid);
|
||||
var imageList = data.imageInfoList;
|
||||
int index = 0;
|
||||
foreach (var item in imageList)
|
||||
string detectRegionJson = JsonConvert.SerializeObject(data.info.detectRegion);
|
||||
//string detectRegionJson = "[[0, 0],[8063, 647],[8017, 7774],[552, 8033]]";
|
||||
//string url = "http://123.132.248.154:6015/DroneEnforcement/2025/20250514/lQLPJyIVimQWGKnNA4PNA6Gw1D3q5gbxUvQIiumcIx4vAA_929_899.png";
|
||||
var regionArray = JsonConvert.DeserializeObject<int[][]>(detectRegionJson);
|
||||
if (oldinfo != null)
|
||||
{
|
||||
//插入详情
|
||||
LasaAiAchievementDetail lasaAiAchievementDetail = new LasaAiAchievementDetail()
|
||||
int index = 0;
|
||||
foreach (var item in imageList)
|
||||
{
|
||||
//插入详情
|
||||
LasaAiAchievementDetail lasaAiAchievementDetail = new LasaAiAchievementDetail()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Image = item.imgUrl,
|
||||
AiAchievementId = oldinfo.Id,
|
||||
Lng = (double?)item.longitude ?? 0.0,
|
||||
Lat = (double?)item.latitude ?? 0.0,
|
||||
};
|
||||
// 如果是第二张图片 -> 画区域 + 上传
|
||||
if (index == 1)
|
||||
{
|
||||
Console.WriteLine(item.imgUrl);
|
||||
Console.WriteLine(regionArray);
|
||||
var imgurlend = await DrawingImgAndUpload(item.imgUrl.ToString().Replace("\\", ""), regionArray, cdid);
|
||||
lasaAiAchievementDetail.Image = imgurlend;
|
||||
}
|
||||
await db.LasaAiAchievementDetail.InsertAsync(lasaAiAchievementDetail);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int index = 0;
|
||||
LasaAiAchievement lasaAiAchievement = new LasaAiAchievement
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Image = item.imgUrl,
|
||||
AiAchievementId = lasaAiAchievement.Id,
|
||||
Lng = (double?)item.longitude ?? 0.0,
|
||||
Lat = (double?)item.latitude ?? 0.0,
|
||||
Title = "本地耕地破坏区域报警",
|
||||
CreateTime = DateTime.Now,
|
||||
AiModel = "DaHuaAi",
|
||||
TaskId = cdid
|
||||
};
|
||||
//// 如果是第二张图片 -> 画区域 + 上传
|
||||
//var a = await DrawingImgAndUpload(item.imgUrl, regionArray);
|
||||
//if (index == 1)
|
||||
//{
|
||||
// //DrawingImgAsync();
|
||||
// Console.WriteLine(item.imgUrl);
|
||||
// Console.WriteLine(regionArray);
|
||||
// a = await DrawingImgAndUpload(item.imgUrl, regionArray);
|
||||
// lasaAiAchievementDetail.Image = a;
|
||||
//}
|
||||
lasaAiAchievement.Lat = item.latitude;
|
||||
lasaAiAchievement.Lng = item.longitude;
|
||||
lasaAiAchievement.Cover = item.imgUrl;
|
||||
await db.LasaAiAchievementDetail.InsertAsync(lasaAiAchievementDetail);
|
||||
index++;
|
||||
|
||||
foreach (var item in imageList)
|
||||
{
|
||||
//插入详情
|
||||
LasaAiAchievementDetail lasaAiAchievementDetail = new LasaAiAchievementDetail()
|
||||
{
|
||||
Id = Guid.NewGuid().ToString(),
|
||||
Image = item.imgUrl,
|
||||
AiAchievementId = lasaAiAchievement.Id,
|
||||
Lng = (double?)item.longitude ?? 0.0,
|
||||
Lat = (double?)item.latitude ?? 0.0,
|
||||
};
|
||||
// 如果是第二张图片 -> 画区域 + 上传
|
||||
if (index == 1)
|
||||
{
|
||||
Console.WriteLine(item.imgUrl);
|
||||
Console.WriteLine(regionArray);
|
||||
//var imgurlend = await DrawingImgAndUpload(item.imgUrl, regionArray);
|
||||
var imgurlend = await DrawingImgAndUpload(item.imgUrl.ToString().Replace("\\", ""), regionArray, cdid);
|
||||
lasaAiAchievementDetail.Image = imgurlend;
|
||||
}
|
||||
lasaAiAchievement.Lat = item.latitude;
|
||||
lasaAiAchievement.Lng = item.longitude;
|
||||
lasaAiAchievement.Cover = item.imgUrl;
|
||||
await db.LasaAiAchievementDetail.InsertAsync(lasaAiAchievementDetail);
|
||||
index++;
|
||||
}
|
||||
await db.LasaAiAchievement.InsertAsync(lasaAiAchievement);
|
||||
//查询监测记录,然后更新监测记录的成果id
|
||||
await db.Lasa_ChangeDetection.UpdateAsync(u => new Lasa_ChangeDetection
|
||||
{
|
||||
AiAchievementId = lasaAiAchievement.Id
|
||||
}, u => u.Id == cdid);
|
||||
}
|
||||
await db.LasaAiAchievement.InsertAsync(lasaAiAchievement);
|
||||
|
||||
if (db.Commit())
|
||||
return new Response<bool>
|
||||
{
|
||||
|
|
@ -163,13 +206,18 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
};
|
||||
}
|
||||
}
|
||||
public async Task<string> DrawingImgAndUpload(string url, dynamic regionArray)
|
||||
{
|
||||
//var regionArray = JsonConvert.DeserializeObject<int[][]>(detectRegionJson);
|
||||
Console.WriteLine($"regionArray 是否为空: {regionArray == null}, 长度: {regionArray?.Length}");
|
||||
//public async Task<string> DrawingImgAndUpload(string url, int[][] regionArray)
|
||||
public async Task<string> DrawingImgAndUpload(string url, int[][] regionArray, string cdid)
|
||||
{
|
||||
//string url = "http://123.132.248.154:6015/DroneEnforcement/2025/20250514/lQLPJyIVimQWGKnNA4PNA6Gw1D3q5gbxUvQIiumcIx4vAA_929_899.png";
|
||||
|
||||
if (regionArray == null || regionArray.Length == 0)
|
||||
throw new ArgumentException("detectRegion 参数无效");
|
||||
// detectRegion JSON(可以直接替换成你的接口返回数据)
|
||||
//string detectRegionJson = "[[0, 0],[8063, 647],[8017, 7774],[552, 8033]]";
|
||||
//var regionArray = JsonConvert.DeserializeObject<int[][]>(detectRegionJson);
|
||||
//Console.WriteLine($"regionArray 是否为空");
|
||||
|
||||
//if (regionArray == null || regionArray.Length == 0)
|
||||
// throw new ArgumentException("detectRegion 参数无效");
|
||||
|
||||
Point[] polygon = new Point[regionArray.Length];
|
||||
for (int i = 0; i < regionArray.Length; i++)
|
||||
|
|
@ -180,7 +228,6 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
using (HttpClient client = new HttpClient())
|
||||
{
|
||||
var bytes = await client.GetByteArrayAsync(url);
|
||||
|
||||
using (var ms = new MemoryStream(bytes))
|
||||
using (var image = Image.FromStream(ms))
|
||||
using (var bmp = new Bitmap(image))
|
||||
|
|
@ -189,20 +236,19 @@ namespace OpenAuth.App.ServiceApp.Algo
|
|||
g.SmoothingMode = SmoothingMode.AntiAlias;
|
||||
|
||||
using (var pen = new Pen(Color.Red, 5))
|
||||
using (var brush = new SolidBrush(Color.FromArgb(80, Color.Blue)))
|
||||
{
|
||||
g.FillPolygon(brush, polygon);
|
||||
g.DrawPolygon(pen, polygon);
|
||||
}
|
||||
|
||||
|
||||
using (var outputStream = new MemoryStream())
|
||||
{
|
||||
bmp.Save(outputStream, ImageFormat.Png);
|
||||
outputStream.Position = 0;
|
||||
string fileName = Path.GetFileName(new Uri(url).AbsolutePath);
|
||||
// 上传到 MinIO(直接传 MemoryStream)
|
||||
string uploadedUrl = await _minioService.UploadStreamFile(outputStream, fileName, "test", Guid.NewGuid().ToString());
|
||||
Console.WriteLine(uploadedUrl);
|
||||
string uploadedUrl = await _minioService.UploadStreamFile(outputStream, fileName, "test", cdid);
|
||||
Console.WriteLine("返回imgurl:" + uploadedUrl);
|
||||
return uploadedUrl;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ namespace OpenAuth.App.ServiceApp
|
|||
};
|
||||
}
|
||||
}
|
||||
public async Task<Response<bool>> AddChangeDetection(Lasa_ChangeDetection info)
|
||||
public async Task<Response<string>> AddChangeDetection(Lasa_ChangeDetection info)
|
||||
{
|
||||
using (var db = UnitWork.CreateContext())
|
||||
{
|
||||
|
|
@ -187,15 +187,15 @@ namespace OpenAuth.App.ServiceApp
|
|||
info.CreateTime = DateTime.Now;
|
||||
await db.Lasa_ChangeDetection.InsertAsync(info);
|
||||
if (db.Commit())
|
||||
return new Response<bool>
|
||||
return new Response<string>
|
||||
{
|
||||
Result = true,
|
||||
Result = info.Id,
|
||||
Message = "添加成功"
|
||||
};
|
||||
else
|
||||
return new Response<bool>
|
||||
return new Response<string>
|
||||
{
|
||||
Result = false,
|
||||
Result = info.Id,
|
||||
Message = "添加失败"
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,9 +138,9 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public async Task<Response<bool>> AddChangeDetection(Lasa_ChangeDetection info)
|
||||
public async Task<Response<string>> AddChangeDetection(Lasa_ChangeDetection info)
|
||||
{
|
||||
var result = new Response<bool>();
|
||||
var result = new Response<string>();
|
||||
try
|
||||
{
|
||||
result = await _app.AddChangeDetection(info);
|
||||
|
|
|
|||
|
|
@ -225,27 +225,32 @@ namespace OpenAuth.WebApi.Controllers.ServiceControllers
|
|||
/// <param name="secondId"></param>
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public async void BehaviorAlarm(string firstId, string secondId)
|
||||
public async Task<Response<string>> BehaviorAlarm(string firstId, string secondId, string cdId)
|
||||
{
|
||||
var mq = await RabbitMqSender.CreateAsync("123.132.248.154", 9103, "DHCloudg1", "Cloud0#4fCraQrm");
|
||||
var dataList = await _app.BehaviorAlarm(firstId, secondId);
|
||||
var dataList = await _app.BehaviorAlarm(firstId, secondId, cdId);
|
||||
foreach (var data in dataList.Result)
|
||||
{
|
||||
await mq.SendAsync("event.capturePic.1.sdhc04", JsonConvert.SerializeObject(data));
|
||||
}
|
||||
return new Response<string>()
|
||||
{
|
||||
Code = 200,
|
||||
Result = "执行成功"
|
||||
};
|
||||
}
|
||||
/// <summary>
|
||||
/// 测试大华
|
||||
/// </summary>
|
||||
/// <param name="info"></param>
|
||||
/// <param name="detectRegionJson"></param>
|
||||
[HttpPost]
|
||||
[AllowAnonymous]
|
||||
public async void DrawingImgAndUploadAsync(string info, int[][] detectRegionJson)
|
||||
{
|
||||
await _app.DrawingImgAndUpload(info, detectRegionJson);
|
||||
///// <summary>
|
||||
///// 测试大华
|
||||
///// </summary>
|
||||
///// <param name="info"></param>
|
||||
///// <param name="detectRegionJson"></param>
|
||||
//[HttpPost]
|
||||
//[AllowAnonymous]
|
||||
//public async void DrawingImgAndUploadAsync(string info, int[][] detectRegionJson)
|
||||
//{
|
||||
// await _app.DrawingImgAndUpload(info, detectRegionJson);
|
||||
|
||||
}
|
||||
//}
|
||||
/// <summary>
|
||||
/// 测试插入数据
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace OpenAuth.WebApi.Model.RabbitMQService
|
|||
|
||||
var body = ea.Body.ToArray();
|
||||
var message = Encoding.UTF8.GetString(body);
|
||||
Console.WriteLine($"接收数据[processing_event]: {message}");
|
||||
//Console.WriteLine($"接收数据[processing_event]: {message}");
|
||||
// Exchange 来做不同处理
|
||||
switch (ea.Exchange)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue