Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
ReelCounter
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit bf447aef
由
cuiyadong
编写于
2019-04-25 17:42:29 +0800
浏览文件
选项
浏览文件
标签
下载
差异文件
Merge branch 'master' of
https://gitee.com/sunky045/FeedCounter
2 个父辈
54f08551
dc4f85e6
全部展开
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
23 行增加
和
26 行删除
AccImage/AccImage.csproj
AccImage/AccUtil.cs
AccImage/SplitItem.cs
AccImage/AccImage.csproj
查看文件 @
bf447ae
...
...
@@ -63,6 +63,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AccUtil.cs" />
<Compile Include="ImageUtil.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SplitItem.cs" />
...
...
AccImage/AccUtil.cs
0 → 100644
查看文件 @
bf447ae
此文件的差异被折叠,
点击展开。
AccImage/SplitItem.cs
查看文件 @
bf447ae
...
...
@@ -9,6 +9,7 @@ namespace AccImage
{
public
class
SplitItem
{
public
static
double
DIFF_PERCENT
=
0.5
;
public
bool
isEnd
=
false
;
public
double
avgRadius
=
0
;
public
int
centerX
=
0
;
...
...
@@ -16,6 +17,8 @@ namespace AccImage
public
double
currentMaxRadius
=
0
;
public
List
<
Circle
>
circles
=
new
List
<
Circle
>();
private
List
<
Circle
>
nearbyCircles
=
new
List
<
Circle
>();
/// <summary>
/// 一遍结束后调用
/// </summary>
...
...
@@ -29,9 +32,9 @@ namespace AccImage
}
else
{
//与平均半径差值在
1
0%以内,认为OK
//与平均半径差值在
5
0%以内,认为OK
double
diff
=
avgRadius
-
currentMaxRadius
;
if
(
diff
/
avgRadius
<=
0.5
)
if
(
diff
/
avgRadius
<=
DIFF_PERCENT
)
{
isValid
=
true
;
}
...
...
@@ -52,26 +55,26 @@ namespace AccImage
circle
.
x
=
centerX
;
circle
.
y
=
centerY
;
circles
.
Add
(
circle
);
if
(
nearbyCircles
.
Count
%
50
==
0
)
{
nearbyCircles
=
nearbyCircles
.
Where
(
c
=>
centerX
-
c
.
x
<
2
*
currentMaxRadius
).
ToList
();
}
nearbyCircles
.
Add
(
circle
);
currentMaxRadius
=
0
;
centerX
=
0
;
centerY
=
0
;
////平均半径
//double total = 0;
//foreach (Circle c in circles)
//{
// total = total + c.radius;
//}
//avgRadius = total / circles.Count;
if
(
circle
.
radius
>
avgRadius
)
{
avgRadius
=
circle
.
radius
;
}
}
else
{
isEnd
=
true
;
}
}
...
...
@@ -134,31 +137,23 @@ namespace AccImage
{
Point2d
point
=
new
Point2d
(
px
,
py
);
double
minDistanceToCircle
=
-
1
;
foreach
(
Circle
c
in
circles
)
List
<
Circle
>
neighbourCircles
=
nearbyCircles
;
if
(
oneBlobRadius
>
0
)
{
neighbourCircles
=
nearbyCircles
.
Where
(
c
=>
Math
.
Abs
(
c
.
x
-
px
)
<=
2
*
oneBlobRadius
&&
Math
.
Abs
(
c
.
y
-
py
)
<=
2
*
oneBlobRadius
).
ToList
();
}
foreach
(
Circle
c
in
neighbourCircles
)
{
Point2d
circleCenter
=
new
Point2d
(
c
.
x
,
c
.
y
);
double
distanceToCircle
=
point
.
DistanceTo
(
circleCenter
);
if
(
distanceToCircle
<=
c
.
radius
)
double
distanceToCircle
=
point
.
DistanceTo
(
circleCenter
)
-
c
.
radius
;
if
(
distanceToCircle
<=
DIFF_PERCENT
*
c
.
radius
)
{
return
0
;
}
//当前点到料盘中心与圆心到料盘中心的距离在直径内,忽略
//if(oneBlobRadius != -1 && oneBlobWidth != -1)
//{
// double distanceToReelCenter = point.DistanceTo(reelCenter);
// double circleCenterToReelCenter = circleCenter.DistanceTo(reelCenter);
// if (Math.Abs(distanceToReelCenter - circleCenterToReelCenter) < oneBlobRadius)
// {
// if (distanceToCircle < oneBlobWidth)
// {
// return 0;
// }
// }
//}
if
(
minDistanceToCircle
==
-
1
||
distanceToCircle
<
minDistanceToCircle
)
{
minDistanceToCircle
=
distanceToCircle
-
c
.
radius
;
minDistanceToCircle
=
distanceToCircle
;
}
}
return
minDistanceToCircle
;
...
...
@@ -171,6 +166,7 @@ namespace AccImage
public
int
x
;
public
int
y
;
public
double
radius
;
public
Scalar
color
=
Scalar
.
Green
;
public
double
distanceToCenter
=
0
;
public
double
distanceToCircle
(
Circle
c
)
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论