Explorar o código

Merge branch 'ZIM-DEV'

ZIM hai 1 ano
pai
achega
9bf9fc7824

+ 4 - 2
Assets/InfraredProject/WebCamera/Script/ZIM/InfraredLocate/InfraredSpot/InfraredSpot.cs

@@ -1,4 +1,5 @@
 using System.Collections.Generic;
+using System.Linq;
 using UnityEngine;
 using ZIM.Unity;
 using Color = UnityEngine.Color;
@@ -85,12 +86,13 @@ namespace ZIM
             PixelSpotArea select = null;
             var minLength = float.MaxValue;
             var predict = Predict.Value;
+            var refPoint = (predict + spots.Last().Centroid) / 2;       // 用预测点和最后一个点的中点来判断是否追踪到
             foreach (var i in areas)
             {
-                var len = (i.Centroid - predict).magnitude;
+                var len = (i.Centroid - refPoint).magnitude;
                 if (len < MinVerifyLength)
                 {
-                    if (len < minLength)
+                    if (len < minLength)        // 找到追踪到的,并且距离最近的spot
                     {
                         select = i;
                         minLength = len;

+ 4 - 4
Assets/InfraredProject/WebCamera/Script/ZIM/InfraredLocate/ScreenIdentification.cs

@@ -691,7 +691,7 @@ namespace o0.Project
                 var scale = 1.0f / maxWhite;        // 放大对比度
 
                 var differPixel = new UnityEngine.Color[Size.x * Size.y];
-                var whitePixel = new UnityEngine.Color[Size.x * Size.y];
+                //var whitePixel = new UnityEngine.Color[Size.x * Size.y];
                 Parallel.For(0, Size.x, x =>
                 {
                     for (int y = 0; y < Size.y; y++)
@@ -699,11 +699,11 @@ namespace o0.Project
                         var i = y * Size.x + x;
                         var d = ScreenWhiteTexture[i] - ScreenBlackTexture[i];
                         differPixel[i] = new UnityEngine.Color(d.x, d.y, d.z) * scale;
-                        whitePixel[i] = new UnityEngine.Color(ScreenWhiteTexture[i].x, ScreenWhiteTexture[i].y, ScreenWhiteTexture[i].z) * scale;
+                        //whitePixel[i] = new UnityEngine.Color(ScreenWhiteTexture[i].x, ScreenWhiteTexture[i].y, ScreenWhiteTexture[i].z) * scale;
                     }
                 });
-                PixelsMultipleBatches.Add(differPixel);
-                PixelsMultipleBatches.Add(whitePixel);
+                PixelsMultipleBatches.Add(differPixel);     // 色差图
+                //PixelsMultipleBatches.Add(whitePixel);    // 原图
             }
 
             int conSize = (int)Math.Ceiling(0.007f * Size.y) * 2 + 1;

+ 3 - 2
Assets/InfraredProject/WebCamera/Script/ZIM/ScreenLocate.cs

@@ -729,12 +729,13 @@ public partial class ScreenLocate : MonoBehaviour
     private bool RefreshCameraSize()
     {
         var sizeNew = new o0.Geometry2D.Vector<int>((int)getUVCCameraInfoSize.x, (int)getUVCCameraInfoSize.y);
-        if (sizeNew != CameraSize) 
+        var sizeNewFloat = getUVCCameraInfoSize.o0Vector();
+        if (sizeNew != CameraSize || (screenIdentification.Screen != null && sizeNewFloat != screenIdentification.Screen.QuadInCamera.CameraSize)) 
         {
             Debug.Log($"<color=aqua>[ScreenLocate] 分辨率变化,刷新分辨率(from {CameraSize.x}×{CameraSize.y} to {sizeNew.x}×{sizeNew.y}), 是否有屏幕数据: {screenIdentification.Screen.QuadInCamera != null}, 是否有手动数据: {screenIdentification.QuadManual != null}</color>");
             // 同步相机分辨率
             CameraSize = sizeNew;
-            var sizeNewFloat = getUVCCameraInfoSize.o0Vector();
+            
             screenIdentification.Screen.RefreshCameraSize(sizeNewFloat);
             screenIdentification.QuadAuto?.ReSize(sizeNewFloat, ScreenMap.ViewAspectRatioSetting);
             screenIdentification.QuadManual?.ReSize(sizeNewFloat, ScreenMap.ViewAspectRatioSetting);