Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2020-2-capstone-design2
/
2015104165
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
김태희
2020-11-13 14:41:06 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
0f14cf1742f7e364929763c903a0e9d1a27b626a
0f14cf17
1 parent
fb3ace31
add Sign Detection with Gaussian Filter
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
79 additions
and
0 deletions
Prj/diagramDetection.py
Prj/diagramDetection.py
0 → 100644
View file @
0f14cf1
import
cv2
import
numpy
as
np
def
stackImages
(
scale
,
imgArray
):
#calculate convolution
rows
=
len
(
imgArray
)
cols
=
len
(
imgArray
[
0
])
rowsAvailable
=
isinstance
(
imgArray
[
0
],
list
)
width
=
imgArray
[
0
][
0
]
.
shape
[
1
]
height
=
imgArray
[
0
][
0
]
.
shape
[
0
]
if
rowsAvailable
:
for
x
in
range
(
0
,
rows
):
for
y
in
range
(
0
,
cols
):
if
imgArray
[
x
][
y
]
.
shape
[:
2
]
==
imgArray
[
0
][
0
]
.
shape
[:
2
]:
imgArray
[
x
][
y
]
=
cv2
.
resize
(
imgArray
[
x
][
y
],
(
0
,
0
),
None
,
scale
,
scale
)
else
:
imgArray
[
x
][
y
]
=
cv2
.
resize
(
imgArray
[
x
][
y
],
(
imgArray
[
0
][
0
]
.
shape
[
1
],
imgArray
[
0
][
0
]
.
shape
[
0
]),
None
,
scale
,
scale
)
if
len
(
imgArray
[
x
][
y
]
.
shape
)
==
2
:
imgArray
[
x
][
y
]
=
cv2
.
cvtColor
(
imgArray
[
x
][
y
],
cv2
.
COLOR_GRAY2BGR
)
imageBlank
=
np
.
zeros
((
height
,
width
,
3
),
np
.
uint8
)
hor
=
[
imageBlank
]
*
rows
hor_con
=
[
imageBlank
]
*
rows
for
x
in
range
(
0
,
rows
):
hor
[
x
]
=
np
.
hstack
(
imgArray
[
x
])
ver
=
np
.
vstack
(
hor
)
else
:
for
x
in
range
(
0
,
rows
):
if
imgArray
[
x
]
.
shape
[:
2
]
==
imgArray
[
0
]
.
shape
[:
2
]:
imgArray
[
x
]
=
cv2
.
resize
(
imgArray
[
x
],
(
0
,
0
),
None
,
scale
,
scale
)
else
:
imgArray
[
x
]
=
cv2
.
resize
(
imgArray
[
x
],
(
imgArray
[
0
]
.
shape
[
1
],
imgArray
[
0
]
.
shape
[
0
]),
None
,
scale
,
scale
)
if
len
(
imgArray
[
x
]
.
shape
)
==
2
:
imgArray
[
x
]
=
cv2
.
cvtColor
(
imgArray
[
x
],
cv2
.
COLOR_GRAY2BGR
)
hor
=
np
.
hstack
(
imgArray
)
ver
=
horx
return
ver
def
getContours
(
img
):
contours
,
hierarchy
=
cv2
.
findContours
(
img
,
cv2
.
RETR_EXTERNAL
,
cv2
.
CHAIN_APPROX_NONE
)
for
cnt
in
contours
:
area
=
cv2
.
contourArea
(
cnt
)
print
(
area
)
if
area
>
500
:
cv2
.
drawContours
(
imgContour
,
cnt
,
-
1
,
(
255
,
0
,
0
),
3
)
peri
=
cv2
.
arcLength
(
cnt
,
True
)
#print(peri)
approx
=
cv2
.
approxPolyDP
(
cnt
,
0.02
*
peri
,
True
)
print
(
len
(
approx
))
objCor
=
len
(
approx
)
x
,
y
,
w
,
h
=
cv2
.
boundingRect
(
approx
)
if
objCor
==
3
:
objectType
=
"Tri"
elif
objCor
==
4
:
aspRatio
=
w
/
float
(
h
)
if
aspRatio
>
0.98
and
aspRatio
<
1.03
:
objectType
=
"Square"
else
:
objectType
=
"Rectangle"
elif
objCor
>
4
:
objectType
=
"Circle"
else
:
objectType
=
"None"
cv2
.
rectangle
(
imgContour
,(
x
,
y
),(
x
+
w
,
y
+
h
),(
0
,
255
,
0
),
2
)
cv2
.
putText
(
imgContour
,
objectType
,
(
x
+
(
w
//
2
)
-
10
,
y
+
(
h
//
2
)
-
10
),
cv2
.
FONT_HERSHEY_COMPLEX
,
0.7
,
(
0
,
0
,
0
),
2
)
path
=
'TestPhoto/test08.jpg'
img
=
cv2
.
imread
(
path
)
imgContour
=
img
.
copy
()
imgGray
=
cv2
.
cvtColor
(
img
,
cv2
.
COLOR_BGR2GRAY
)
imgBlur
=
cv2
.
GaussianBlur
(
imgGray
,(
7
,
7
),
1
)
# Gaussian smoothing filter for noise(고주파) reduce
imgCanny
=
cv2
.
Canny
(
imgBlur
,
50
,
50
)
getContours
(
imgCanny
)
imgBlank
=
np
.
zeros_like
(
img
)
imgStack
=
stackImages
(
0.6
,([
img
,
imgGray
,
imgBlur
],
[
imgCanny
,
imgContour
,
imgBlank
]))
cv2
.
imshow
(
"Stack"
,
imgStack
)
cv2
.
waitKey
(
0
)
Please
register
or
login
to post a comment