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-12-14 20:25:01 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
fa7faa8161b579cea895a01aa822589c0dbd2ebf
fa7faa81
1 parent
4cef9690
add No Smoking Area Detection Code
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
125 additions
and
0 deletions
Prj/main-area.py
Prj/main-area.py
0 → 100644
View file @
fa7faa8
"""Detects text in the file."""
from
google.cloud
import
vision
import
io
import
os
import
cv2
import
numpy
as
np
smokingZone
=
0
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
=
hor
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
=
"Sign"
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
)
if
objectType
==
"Sign"
:
smokingZone
=
1
os
.
environ
[
"GOOGLE_APPLICATION_CREDENTIALS"
]
=
"C:/Users/User/Downloads/SmokeDetection-ab1773dcbc6a.json"
client
=
vision
.
ImageAnnotatorClient
()
path
=
'TestPhoto/test08.jpg'
with
io
.
open
(
path
,
'rb'
)
as
image_file
:
content
=
image_file
.
read
()
image
=
vision
.
Image
(
content
=
content
)
price_candidate
=
[]
card_number_candidate
=
[]
date_candidate
=
[]
response
=
client
.
text_detection
(
image
=
image
)
texts
=
response
.
text_annotations
print
(
'Texts:'
)
for
text
in
texts
:
content
=
text
.
description
content
=
content
.
replace
(
','
,
''
)
print
(
'
\n
"{}"'
.
format
(
content
))
if
content
==
'SMOKING'
or
content
==
"NO"
:
smokingZone
=
1
print
(
"This is No Smoking Zone"
)
if
response
.
error
.
message
:
raise
Exception
(
'{}
\n
For more info on error messages, check: '
'https://cloud.google.com/apis/design/errors'
.
format
(
response
.
error
.
message
))
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
)
if
smokingZone
==
1
:
imgBlank
=
cv2
.
imread
(
'TestPhoto/detected.png'
)
else
:
imgBlank
=
np
.
zeros_like
(
img
)
imgStack
=
stackImages
(
0.6
,([
img
,
imgGray
,
imgBlur
],
[
imgCanny
,
imgContour
,
imgBlank
]))
cv2
.
imshow
(
"Stack"
,
imgStack
)
cv2
.
waitKey
(
0
)
\ No newline at end of file
Please
register
or
login
to post a comment