|
|
@@ -446,40 +446,16 @@ public partial class ScreenLocate : MonoBehaviour
|
|
|
if (infraredLocate == null)
|
|
|
{
|
|
|
infraredLocate = new InfraredLocate(mUVCCameraInfo, screenIdentification, InfraredSpotSettings, ScreenPixelCheaker);
|
|
|
+ InfraredSpot.RefreshMinVerifyLength(new o0.Geometry2D.Float.Vector(getUVCCameraInfoSize.x, getUVCCameraInfoSize.y));
|
|
|
//InfraredDemo 初始化
|
|
|
//float redfilterValue = PlayerPrefs.GetFloat("Init redFilterSliderValue", 0.8f);
|
|
|
//Debug.Log("Init Red filterValue:" + redfilterValue);
|
|
|
//infraredLocate.SetBrightnessThreshold(redfilterValue); // 参数是 红外灯的亮度阈值,阈值越小能够检测到的亮度就越低,默认值是0.93
|
|
|
}
|
|
|
|
|
|
- if (RefreshQuadSize()) // 同步分辨率, 分辨率变化后还需同步到InfraredDemo
|
|
|
- {
|
|
|
- quadUnityVectorList = screenIdentification.Screen.QuadInCamera.GetUnityVertexNormalizedList();
|
|
|
-
|
|
|
- if (!ContainsNaN(quadUnityVectorList))
|
|
|
- {
|
|
|
- SaveScreenLocateVectorList();
|
|
|
- //SyncInfraredDemo();
|
|
|
- //SyncInfraredScreenPositioningView();
|
|
|
- InfraredCameraHelper?.InvokeOnUVCPosUpdate(quadUnityVectorList);
|
|
|
- Debug.Log("[ScreenLocate] RefreshCameraSize 屏幕size改变:[" + (int)getUVCCameraInfoSize.x + "," + (int)getUVCCameraInfoSize.y + "]");
|
|
|
- Debug.Log("[ScreenLocate] RefreshCameraSize 屏幕size改变,刷新quadUnityVectorList:" + PrintVector2List(quadUnityVectorList));
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- Debug.LogError("[ScreenLocate] RefreshCameraSize 屏幕size改变,存在NaN值,重新校准:" + PrintVector2List(quadUnityVectorList));
|
|
|
- }
|
|
|
-
|
|
|
- if (DebugOnZIMDemo)
|
|
|
- Main.ShowScreen(screenIdentification.Screen.QuadInCamera);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- //var t0 = Time.realtimeSinceStartup;
|
|
|
-
|
|
|
/* New*/
|
|
|
//Debug.Log((mUVCCameraInfo != null) +" = "+ mUVCCameraInfo.IsPreviewing + " = "+ screenIdentification.Screen.Active);
|
|
|
- if (mUVCCameraInfo != null && mUVCCameraInfo.IsPreviewing) // 成功定位屏幕后才做红外识别
|
|
|
+ if (mUVCCameraInfo != null && mUVCCameraInfo.IsPreviewing)
|
|
|
{
|
|
|
//if (bAutomaticRecognition)
|
|
|
//{
|
|
|
@@ -509,13 +485,36 @@ public partial class ScreenLocate : MonoBehaviour
|
|
|
CreateUVCTexture2DIfNeeded((int)getUVCCameraInfoSize.x, (int)getUVCCameraInfoSize.y);
|
|
|
if (!screenIdentification.Update(mUVCTexture2D))
|
|
|
{
|
|
|
- CameraSize = new o0.Geometry2D.Vector<int>(mUVCTexture2D.width, mUVCTexture2D.height);
|
|
|
+ // 同步分辨率, 分辨率变化后还需同步到InfraredDemo
|
|
|
+ if (RefreshCameraSize())
|
|
|
+ {
|
|
|
+ if (screenIdentification.Screen.QuadInCamera != null)
|
|
|
+ {
|
|
|
+ quadUnityVectorList = screenIdentification.Screen.QuadInCamera.GetUnityVertexNormalizedList();
|
|
|
+
|
|
|
+ if (!ContainsNaN(quadUnityVectorList))
|
|
|
+ {
|
|
|
+ SaveScreenLocateVectorList();
|
|
|
+ //SyncInfraredDemo();
|
|
|
+ //SyncInfraredScreenPositioningView();
|
|
|
+ InfraredCameraHelper?.InvokeOnUVCPosUpdate(quadUnityVectorList);
|
|
|
+ Debug.Log("[ScreenLocate] RefreshCameraSize 屏幕size改变:[" + (int)getUVCCameraInfoSize.x + "," + (int)getUVCCameraInfoSize.y + "]");
|
|
|
+ Debug.Log("[ScreenLocate] RefreshCameraSize 屏幕size改变,刷新quadUnityVectorList:" + PrintVector2List(quadUnityVectorList));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Debug.LogError("[ScreenLocate] RefreshCameraSize 屏幕size改变,存在NaN值,重新校准:" + PrintVector2List(quadUnityVectorList));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (DebugOnZIMDemo)
|
|
|
+ Main.ShowScreen(screenIdentification.Screen.QuadInCamera);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取像素,用于后续操作
|
|
|
var pixels = mUVCTexture2D.GetPixels(); // 从左往右、从下往上
|
|
|
|
|
|
AutoLightPixels(pixels, CameraSize.x, CameraSize.y);
|
|
|
- //return;
|
|
|
- //InfraredSpots = infraredLocate.Update(pixels);
|
|
|
-
|
|
|
if (bSinglePoint)
|
|
|
infraredSpotBuffer = infraredLocate.UpdateSingle(pixels);
|
|
|
else
|
|
|
@@ -713,14 +712,21 @@ public partial class ScreenLocate : MonoBehaviour
|
|
|
|
|
|
}
|
|
|
|
|
|
- private bool RefreshQuadSize()
|
|
|
+ private bool RefreshCameraSize()
|
|
|
{
|
|
|
- if (screenIdentification.Screen.RefreshCameraSize(getUVCCameraInfoSize))
|
|
|
+ var sizeNew = new o0.Geometry2D.Vector<int>((int)getUVCCameraInfoSize.x, (int)getUVCCameraInfoSize.y);
|
|
|
+ if (sizeNew != CameraSize)
|
|
|
{
|
|
|
- var sizeNew = getUVCCameraInfoSize.o0Vector();
|
|
|
- screenIdentification.QuadAuto?.ReSize(sizeNew, ScreenMap.ViewAspectRatioSetting);
|
|
|
- screenIdentification.QuadManual?.ReSize(sizeNew, ScreenMap.ViewAspectRatioSetting);
|
|
|
- screenIdentification.QuadSemiAuto?.ReSize(sizeNew, ScreenMap.ViewAspectRatioSetting);
|
|
|
+ Debug.Log("[ScreenLocate] 分辨率变化,刷新分辨率");
|
|
|
+ // 同步相机分辨率
|
|
|
+ CameraSize = sizeNew;
|
|
|
+ var sizeNewFloat = getUVCCameraInfoSize.o0Vector();
|
|
|
+ screenIdentification.Screen.RefreshCameraSize(sizeNewFloat);
|
|
|
+ screenIdentification.QuadAuto?.ReSize(sizeNewFloat, ScreenMap.ViewAspectRatioSetting);
|
|
|
+ screenIdentification.QuadManual?.ReSize(sizeNewFloat, ScreenMap.ViewAspectRatioSetting);
|
|
|
+ screenIdentification.QuadSemiAuto?.ReSize(sizeNewFloat, ScreenMap.ViewAspectRatioSetting);
|
|
|
+
|
|
|
+ InfraredSpot.RefreshMinVerifyLength(sizeNewFloat);
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|