Python + OpenCV로 미소 실시간 감지
7816 단어 파이썬OpenCVpy2appPySimpleGUI
배경
온라인 해커슨에 참가했을 때 작성한 앱이 입상했기 때문에 기념에 올려두려고 생각했다.
건의 해커슨에서는, 「어려운 기술에 도전하고 있는지, 새로운 기술에 도전하고 있는지」가 평가 기준의 하나였기 때문에, 이번은 OpenCV와 PySimpleGUI에 도전해 보았다. 프로그램의 전체 용도는 여기 .
개요
실시간으로 미소를 감지하는 앱을 만들었습니다.
이미지는 이런 느낌 ↓.
・미소 때만 붉은 직사각형이 표시되어, 그 직사각형의 종횡비를 미소의 점수로 하고 있다.
・점수에 정수를 곱한 것을 우측에 리얼타임 묘화 하고 있다.
· py2app에서 mac 용 독립 실행 형 응용 프로그램입니다.
코드
OpenCV와 PySimpleGUI에서는 실시간으로 처리하고 싶기 때문에 기본적으로
sample.pywhile True
#何かしらの処理
if a: #何かしらの条件
break
라는 형태가 된다.
실제 코드를 발췌하면
SmileDetector.pydef main():
#省略
while True:
stage += 1
event, values = win.read(timeout=1)
if event in (None, "Quit"):
break
ret, frame = camera.read()
image = frame[90:990, 0:-1]
image_ = cv2.resize(image, (750,400), cv2.INTER_LANCZOS4)
# ----------------- Process images here. ---------------- #
gray = cv2.cvtColor(image_, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
smile_value = 0
for (x, y, w, h) in faces:
cv2.rectangle(image_, (x, y), (x + w, y + h), (255, 0, 0), 2)
face = image_[y:y + h, x:x + w]
face_gray = gray[y:y + h, x:x + w]
smiles = smile_cascade.detectMultiScale(face_gray, 1.8, 20)
for (sx, sy, sw, sh) in smiles:
cv2.rectangle(face, (sx, sy), ((sx + sw), (sy + sh)), (0, 0, 255), 2)
#省略
# ----------------- End of Image Processing ----------------- #
이런 느낌.
while True 로 항상 화면의 정보를 받아들이면서, 그것에 대해서 화상 처리를 더해 간다.
OpenCV 단체로 실시간 화상 처리를 하는 경우도, PySimpleGUI 단체로 앱을 만드는 경우의 양자 모두,
while True: 를 사용하기 때문에, 그 부분을 하나로 정리하는 것으로 구현할 수 있다.
끝에
입상할 수 있어 5천엔 이내의 기술서를 받게 되었다. 기뻤다.
이 앱을 온라인 면접의 백으로 움직여 놓고, 웃을 수 있는지를 체크해 면접을 극복하고 싶다.
Reference
이 문제에 관하여(Python + OpenCV로 미소 실시간 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/S8s8Max/items/3fc599d32ed3bd91fbe9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
실시간으로 미소를 감지하는 앱을 만들었습니다.
이미지는 이런 느낌 ↓.
・미소 때만 붉은 직사각형이 표시되어, 그 직사각형의 종횡비를 미소의 점수로 하고 있다.
・점수에 정수를 곱한 것을 우측에 리얼타임 묘화 하고 있다.
· py2app에서 mac 용 독립 실행 형 응용 프로그램입니다.
코드
OpenCV와 PySimpleGUI에서는 실시간으로 처리하고 싶기 때문에 기본적으로
sample.pywhile True
#何かしらの処理
if a: #何かしらの条件
break
라는 형태가 된다.
실제 코드를 발췌하면
SmileDetector.pydef main():
#省略
while True:
stage += 1
event, values = win.read(timeout=1)
if event in (None, "Quit"):
break
ret, frame = camera.read()
image = frame[90:990, 0:-1]
image_ = cv2.resize(image, (750,400), cv2.INTER_LANCZOS4)
# ----------------- Process images here. ---------------- #
gray = cv2.cvtColor(image_, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
smile_value = 0
for (x, y, w, h) in faces:
cv2.rectangle(image_, (x, y), (x + w, y + h), (255, 0, 0), 2)
face = image_[y:y + h, x:x + w]
face_gray = gray[y:y + h, x:x + w]
smiles = smile_cascade.detectMultiScale(face_gray, 1.8, 20)
for (sx, sy, sw, sh) in smiles:
cv2.rectangle(face, (sx, sy), ((sx + sw), (sy + sh)), (0, 0, 255), 2)
#省略
# ----------------- End of Image Processing ----------------- #
이런 느낌.
while True 로 항상 화면의 정보를 받아들이면서, 그것에 대해서 화상 처리를 더해 간다.
OpenCV 단체로 실시간 화상 처리를 하는 경우도, PySimpleGUI 단체로 앱을 만드는 경우의 양자 모두,
while True: 를 사용하기 때문에, 그 부분을 하나로 정리하는 것으로 구현할 수 있다.
끝에
입상할 수 있어 5천엔 이내의 기술서를 받게 되었다. 기뻤다.
이 앱을 온라인 면접의 백으로 움직여 놓고, 웃을 수 있는지를 체크해 면접을 극복하고 싶다.
Reference
이 문제에 관하여(Python + OpenCV로 미소 실시간 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/S8s8Max/items/3fc599d32ed3bd91fbe9
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
while True
#何かしらの処理
if a: #何かしらの条件
break
def main():
#省略
while True:
stage += 1
event, values = win.read(timeout=1)
if event in (None, "Quit"):
break
ret, frame = camera.read()
image = frame[90:990, 0:-1]
image_ = cv2.resize(image, (750,400), cv2.INTER_LANCZOS4)
# ----------------- Process images here. ---------------- #
gray = cv2.cvtColor(image_, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=5)
smile_value = 0
for (x, y, w, h) in faces:
cv2.rectangle(image_, (x, y), (x + w, y + h), (255, 0, 0), 2)
face = image_[y:y + h, x:x + w]
face_gray = gray[y:y + h, x:x + w]
smiles = smile_cascade.detectMultiScale(face_gray, 1.8, 20)
for (sx, sy, sw, sh) in smiles:
cv2.rectangle(face, (sx, sy), ((sx + sw), (sy + sh)), (0, 0, 255), 2)
#省略
# ----------------- End of Image Processing ----------------- #
입상할 수 있어 5천엔 이내의 기술서를 받게 되었다. 기뻤다.
이 앱을 온라인 면접의 백으로 움직여 놓고, 웃을 수 있는지를 체크해 면접을 극복하고 싶다.
Reference
이 문제에 관하여(Python + OpenCV로 미소 실시간 감지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/S8s8Max/items/3fc599d32ed3bd91fbe9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)