|
|
@@ -979,6 +979,8 @@ namespace o0.Project
|
|
|
|
|
|
// 角度阈值,用来判断线段的梯度方向是否指向屏幕中心(avgPoint)
|
|
|
var avaAngleHalf = 75f;
|
|
|
+ // 评估屏幕内部的Line
|
|
|
+ var interLineGuess = new InterLineGuess(screenLocateMatList, gradientLength * 2, minLength);
|
|
|
|
|
|
#region 内部函数
|
|
|
float ScreenGrad(LineIdentified line)
|
|
|
@@ -1078,7 +1080,7 @@ namespace o0.Project
|
|
|
}
|
|
|
// 新增功能(解决黑边问题):根据 result 再找平行线,判断是否替换(1-在 result 内部,且离中点最近,2-接近平行)
|
|
|
UpdateResultlines(resultSemiAuto, FindInterLinePair(
|
|
|
- (i) => true,
|
|
|
+ interLineGuess,
|
|
|
GetInterSelectableLines(quadLinesSemiAuto, resultSemiAuto, resultSemiAutoPedal, avgPoint)));
|
|
|
|
|
|
#endregion
|
|
|
@@ -1103,7 +1105,7 @@ namespace o0.Project
|
|
|
}
|
|
|
// 新增功能(解决黑边问题):根据 resultAuto 再找平行线,判断是否替换(1-在 result 内部,且离中点最近,2-接近平行,3-LineGuess判断是直线)
|
|
|
UpdateResultlines(resultAuto, FindInterLinePair(
|
|
|
- new LineGuess(screenLocateMatList, gradientLength * 2, minLength).GuessIsLine,
|
|
|
+ interLineGuess,
|
|
|
GetInterSelectableLines(quadLinesAuto, resultAuto, resultAutoPedal, avgPoint)));
|
|
|
#endregion
|
|
|
|
|
|
@@ -1145,7 +1147,7 @@ namespace o0.Project
|
|
|
result[inter.b.ScreenLineIndex] = inter.b;
|
|
|
}
|
|
|
|
|
|
- (LineIdentified a, LineIdentified b) FindInterLinePair(Func<LineIdentified, bool> guessIsLine, List<LineIdentified> interSelectable, int maxCountToSelect = 8)
|
|
|
+ (LineIdentified a, LineIdentified b) FindInterLinePair(InterLineGuess lineGuess, List<LineIdentified> interSelectable, int maxCountToSelect = 8)
|
|
|
{
|
|
|
Debug.Log("[ScreenIdentification] selectable inter line count: " + interSelectable.Count);
|
|
|
interSelectable.Sort((a, b) => b.ZIMGradient.CompareTo(a.ZIMGradient));
|
|
|
@@ -1153,7 +1155,7 @@ namespace o0.Project
|
|
|
LineIdentified[] selected = new LineIdentified[4];
|
|
|
foreach (var line in interSelectable)
|
|
|
{
|
|
|
- if (guessIsLine(line)) // 评价是不是Line, 并且找到离中心点最近的
|
|
|
+ if (line.GuessIsInterLine(lineGuess)) // 评价是不是Line, 并且找到离中心点最近的
|
|
|
{
|
|
|
if (ScreenLocate.Main.DebugOnZIMDemo)
|
|
|
Debug.Log($"[ScreenIdentification] {interSelectable.IndexOf(line)}, guess is line: (index)" + line.ScreenLineIndex);
|