Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2021-1-capstone-design2
/
2016104095
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
강세희
2021-05-06 19:25:04 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
ca9cb52039849ef62fc1f12612d4d4f518ce0016
ca9cb520
1 parent
78e7922b
[UPDATE] 검출 객체 제한
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
10 deletions
codes/Project/project.py
codes/Project/project.py
View file @
ca9cb52
...
...
@@ -41,7 +41,7 @@ if __name__ == '__main__':
count
=
0
while
success
:
cv2
.
imwrite
(
"mid/frame
%
d.png"
%
count
,
image
)
# save frame as JPEG file
success
,
image
=
camera
.
read
()
success
,
image
=
camera
.
read
()
count
+=
1
# 각 프레임 별로 Image Detection 후 프레임 번호, 객체 이름(name)과 객체의 크기(size), 객체가 얼마나 가운데 있는지(coordinatevalue) 저장
...
...
@@ -55,18 +55,24 @@ if __name__ == '__main__':
for
box
,
score
,
cl
in
zip
(
boxes
,
scores
,
classes
):
x
,
y
,
w
,
h
=
box
name
=
all_classes
[
cl
]
size
=
w
*
h
size
=
int
(
w
*
h
)
if
size
<=
4000
:
# 사이즈가 너무 작아 썸네일로 적합하지 않은 경우
continue
if
x
<=
0
or
x
+
w
>=
image
.
shape
[
1
]
or
y
<=
0
or
y
+
h
>=
image
.
shape
[
0
]:
# 검출된 객체가 프레임 밖으로 나간 경우
continue
# 얼마나 가운데인지 확인하는 알고리즘
object
=
Point2D
(
width
=
x
+
h
/
2
,
height
=
y
+
w
/
2
)
a
=
image
.
shape
[
1
]
/
2
-
object
.
width
b
=
image
.
shape
[
0
]
/
2
-
object
.
height
coordinatevalue
=
math
.
sqrt
((
a
*
a
)
+
(
b
*
b
))
coordinatevalue
=
int
(
math
.
sqrt
((
a
*
a
)
+
(
b
*
b
)
))
# 객체 정보 및 계산 값 저장
detectionInfo
.
append
([
i
,
name
,
size
,
coordinatevalue
])
detectionInfo
.
append
([
i
,
name
,
size
,
coordinatevalue
,
int
(
x
),
int
(
y
),
int
(
w
),
int
(
h
)
])
f
=
open
(
"detectionInfo.txt"
,
'w'
)
for
i
in
range
(
len
(
detectionInfo
)):
print
(
detectionInfo
[
i
])
data
=
str
(
detectionInfo
[
i
][
0
])
+
", "
+
detectionInfo
[
i
][
1
]
+
", "
+
str
(
detectionInfo
[
i
][
2
])
+
", "
+
str
(
detectionInfo
[
i
][
3
])
+
", "
+
str
(
detectionInfo
[
i
][
4
])
+
", "
+
str
(
detectionInfo
[
i
][
5
])
+
", "
+
str
(
detectionInfo
[
i
][
6
])
+
", "
+
str
(
detectionInfo
[
i
][
7
])
+
"
\n
"
f
.
write
(
data
)
f
.
close
()
# 검출된 물체 리스트(중복 없이)
namelist
=
{}
...
...
@@ -74,7 +80,6 @@ if __name__ == '__main__':
if
not
detectionInfo
[
i
][
1
]
in
namelist
:
namelist
[
detectionInfo
[
i
][
1
]]
=
[]
# 계획1 : 뒤 두 알고리즘 일정 비율로 합치기
# 크기
for
objectName
in
namelist
.
keys
():
maxindex
=
0
...
...
@@ -91,7 +96,7 @@ if __name__ == '__main__':
output1
=
cv2
.
GaussianBlur
(
image
,
(
5
,
5
),
0
)
cv2
.
imwrite
(
"output1/
%
s.png"
%
(
objectname
),
output1
)
# 가운데 위치
# 가운데 위치
for
objectName
in
namelist
.
keys
():
namelist
[
objectName
]
=
[]
...
...
@@ -111,9 +116,19 @@ if __name__ == '__main__':
cv2
.
imwrite
(
"output2/
%
s.png"
%
(
objectname
),
output2
)
# 계획2 : 프레임별로 나온 객체 겹치는 부분 제외하고 넓이 구해 큰거 Indexlist에 넣기
# 계획2 : 프레임별로 나온 객체 겹치는 부분 제외하고 넓이 구해 큰거 Indexlist에 넣기
# 계획3 : 객체가 특정 위치에 있는 프레임 뽑기
# 모든 프레임에 적용하지 않고 베스트 컷 10컷 정도 선정
# 선정된 프레임 내에서 일정 크기 이상의 객체 중, 겹치는 객체 선정해서 하나의 검출물로 처리
# 정리된 검출 리스트 output3 에 출력
# 계획3 : 객체가 특정 위치에 있는 프레임 뽑기
# output1~3의 결과들을 가지고 특정 위치에 있게 이미지 크롭, 결과를 output1_1, output2_1, output3_1 에 저장
...
...
Please
register
or
login
to post a comment