호리키타 마키와 하시모토 칸나를 더하여 2로 나누어 보았다 with python
17814 단어 Windows8.1파이썬OpenCVpython2.7얼굴 인식
【환경】
windows8.1
python2.7
opencv3
【폴더 구성】
horikita_hasimoto
|---joyu(넷에서 가져온 이미지 폴더)
| |---hasimoto.jpg
| |---horikita.jpg
|---joyu_face(프로그램에서 추출하는 얼굴 이미지 폴더)
|---haarcascade_frontalface_alt.xml(캐스케이드 파일)
|---tashite_nidewaru.py(단 2로 나눈 프로그램)
|---kao_toridasi.py(얼굴을 빼내는 프로그램)
【준비】
인터넷에서 호리키타 마키와 하시모토 칸나의 이미지를 가져옵니다.
나는 다음 이미지를 사용했다.
【프로그램 실행 방법】
kao_toridasi.py# -*- coding: utf-8 -*-
import cv2
import os
import glob
# プログラムのあるフォルダパスの代入
current_dir = os.getcwd()
# joyuフォルダから全ての画像をリスト化
joyu_list = glob.glob(current_dir + "\\joyu\\*")
# カスケードファイル
cascade_path = "haarcascade_frontalface_alt.xml"
for joyu in joyu_list:
#ファイル読み込み
image = cv2.imread(joyu)
if(image is None):
pass
continue
#グレースケール変換
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#カスケード分類器の特徴量を取得する
cascade = cv2.CascadeClassifier(cascade_path)
#顔認識の実行
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
for rect in facerect:
#顔だけ切り出して保存
x = rect[0]
y = rect[1]
width = rect[2]
height = rect[3]
dst = image[y:y+height, x:x+width]
resize_image = cv2.resize(dst,(256,256))
new_image_path = current_dir + '\\joyu_face\\' + str(i) + '.jpg'
cv2.imwrite(new_image_path, resize_image)
i += 1
위 프로그램을 실행하면 joyu_face에 얼굴 이미지가 저장되므로,
이미지 이름을 horikita.jpg, hasimoto.jpg로 변경하십시오.
tashite_nidewaru.py# -*- coding: utf-8 -*-
import cv2
import os
current_dir = os.getcwd()
image_path = current_dir + "\\joyu_face\\"
# ファイル読み込み
horikita = cv2.imread(image_path + "\\horikita.jpg")
hasimoto = cv2.imread(image_path + "\\hasimoto.jpg")
# グレースケール変換
horikita_gray = cv2.cvtColor(horikita, cv2.COLOR_BGR2GRAY)
hasimoto_gray = cv2.cvtColor(hasimoto, cv2.COLOR_BGR2GRAY)
# デフォルトの状態ではかなり気色悪い画像になってしまったため、
# 色を4種類にしてみました
for i in xrange(len(horikita_gray)):
for j in xrange(len(horikita_gray[0])):
if horikita_gray[i][j] >= 192:
horikita_gray[i][j] = 192
elif horikita_gray[i][j] >= 128:
horikita_gray[i][j] = 128
elif horikita_gray[i][j] >= 64:
horikita_gray[i][j] = 64
else:
horikita_gray[i][j] = 0
for i in xrange(len(hasimoto_gray)):
for j in xrange(len(hasimoto_gray[0])):
if hasimoto_gray[i][j] >= 192:
hasimoto_gray[i][j] = 192
elif hasimoto_gray[i][j] >= 128:
hasimoto_gray[i][j] = 128
elif hasimoto_gray[i][j] >= 64:
hasimoto_gray[i][j] = 64
else:
hasimoto_gray[i][j] = 0
horikita_hasimoto = horikita_gray / 2 + hasimoto_gray / 2
for i in xrange(len(horikita_hasimoto)):
for j in xrange(len(horikita_hasimoto[0])):
if horikita_hasimoto[i][j] >= 192:
horikita_hasimoto[i][j] = 192
elif horikita_hasimoto[i][j] >= 128:
horikita_hasimoto[i][j] = 128
elif horikita_hasimoto[i][j] >= 64:
horikita_hasimoto[i][j] = 64
else:
horikita_hasimoto[i][j] = 0
# 画像保存
new_image_path = current_dir + '\\horikita_hasimoto.jpg'
cv2.imwrite(new_image_path, horikita_hasimoto)
new_image_path = current_dir + '\\horikita.jpg'
cv2.imwrite(new_image_path, horikita_gray)
new_image_path = current_dir + '\\hasimoto.jpg'
cv2.imwrite(new_image_path, hasimoto_gray)
【결과】
더하여 2로 나눈 이미지
【감상】
제일 먼저 칼라로 시험했습니다만, 기색이 나쁜 것이 되었습니다.
하지만 흑백에서도 미인이라고는 생각되지 않네요···(; 1_1)
개선점은 많이 있을 것 같습니다.
Reference
이 문제에 관하여(호리키타 마키와 하시모토 칸나를 더하여 2로 나누어 보았다 with python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nobu12/items/5c6c580f2264ac83260f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
horikita_hasimoto
|---joyu(넷에서 가져온 이미지 폴더)
| |---hasimoto.jpg
| |---horikita.jpg
|---joyu_face(프로그램에서 추출하는 얼굴 이미지 폴더)
|---haarcascade_frontalface_alt.xml(캐스케이드 파일)
|---tashite_nidewaru.py(단 2로 나눈 프로그램)
|---kao_toridasi.py(얼굴을 빼내는 프로그램)
【준비】
인터넷에서 호리키타 마키와 하시모토 칸나의 이미지를 가져옵니다.
나는 다음 이미지를 사용했다.
【프로그램 실행 방법】
kao_toridasi.py# -*- coding: utf-8 -*-
import cv2
import os
import glob
# プログラムのあるフォルダパスの代入
current_dir = os.getcwd()
# joyuフォルダから全ての画像をリスト化
joyu_list = glob.glob(current_dir + "\\joyu\\*")
# カスケードファイル
cascade_path = "haarcascade_frontalface_alt.xml"
for joyu in joyu_list:
#ファイル読み込み
image = cv2.imread(joyu)
if(image is None):
pass
continue
#グレースケール変換
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#カスケード分類器の特徴量を取得する
cascade = cv2.CascadeClassifier(cascade_path)
#顔認識の実行
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
for rect in facerect:
#顔だけ切り出して保存
x = rect[0]
y = rect[1]
width = rect[2]
height = rect[3]
dst = image[y:y+height, x:x+width]
resize_image = cv2.resize(dst,(256,256))
new_image_path = current_dir + '\\joyu_face\\' + str(i) + '.jpg'
cv2.imwrite(new_image_path, resize_image)
i += 1
위 프로그램을 실행하면 joyu_face에 얼굴 이미지가 저장되므로,
이미지 이름을 horikita.jpg, hasimoto.jpg로 변경하십시오.
tashite_nidewaru.py# -*- coding: utf-8 -*-
import cv2
import os
current_dir = os.getcwd()
image_path = current_dir + "\\joyu_face\\"
# ファイル読み込み
horikita = cv2.imread(image_path + "\\horikita.jpg")
hasimoto = cv2.imread(image_path + "\\hasimoto.jpg")
# グレースケール変換
horikita_gray = cv2.cvtColor(horikita, cv2.COLOR_BGR2GRAY)
hasimoto_gray = cv2.cvtColor(hasimoto, cv2.COLOR_BGR2GRAY)
# デフォルトの状態ではかなり気色悪い画像になってしまったため、
# 色を4種類にしてみました
for i in xrange(len(horikita_gray)):
for j in xrange(len(horikita_gray[0])):
if horikita_gray[i][j] >= 192:
horikita_gray[i][j] = 192
elif horikita_gray[i][j] >= 128:
horikita_gray[i][j] = 128
elif horikita_gray[i][j] >= 64:
horikita_gray[i][j] = 64
else:
horikita_gray[i][j] = 0
for i in xrange(len(hasimoto_gray)):
for j in xrange(len(hasimoto_gray[0])):
if hasimoto_gray[i][j] >= 192:
hasimoto_gray[i][j] = 192
elif hasimoto_gray[i][j] >= 128:
hasimoto_gray[i][j] = 128
elif hasimoto_gray[i][j] >= 64:
hasimoto_gray[i][j] = 64
else:
hasimoto_gray[i][j] = 0
horikita_hasimoto = horikita_gray / 2 + hasimoto_gray / 2
for i in xrange(len(horikita_hasimoto)):
for j in xrange(len(horikita_hasimoto[0])):
if horikita_hasimoto[i][j] >= 192:
horikita_hasimoto[i][j] = 192
elif horikita_hasimoto[i][j] >= 128:
horikita_hasimoto[i][j] = 128
elif horikita_hasimoto[i][j] >= 64:
horikita_hasimoto[i][j] = 64
else:
horikita_hasimoto[i][j] = 0
# 画像保存
new_image_path = current_dir + '\\horikita_hasimoto.jpg'
cv2.imwrite(new_image_path, horikita_hasimoto)
new_image_path = current_dir + '\\horikita.jpg'
cv2.imwrite(new_image_path, horikita_gray)
new_image_path = current_dir + '\\hasimoto.jpg'
cv2.imwrite(new_image_path, hasimoto_gray)
【결과】
더하여 2로 나눈 이미지
【감상】
제일 먼저 칼라로 시험했습니다만, 기색이 나쁜 것이 되었습니다.
하지만 흑백에서도 미인이라고는 생각되지 않네요···(; 1_1)
개선점은 많이 있을 것 같습니다.
Reference
이 문제에 관하여(호리키타 마키와 하시모토 칸나를 더하여 2로 나누어 보았다 with python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nobu12/items/5c6c580f2264ac83260f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
kao_toridasi.py
# -*- coding: utf-8 -*-
import cv2
import os
import glob
# プログラムのあるフォルダパスの代入
current_dir = os.getcwd()
# joyuフォルダから全ての画像をリスト化
joyu_list = glob.glob(current_dir + "\\joyu\\*")
# カスケードファイル
cascade_path = "haarcascade_frontalface_alt.xml"
for joyu in joyu_list:
#ファイル読み込み
image = cv2.imread(joyu)
if(image is None):
pass
continue
#グレースケール変換
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#カスケード分類器の特徴量を取得する
cascade = cv2.CascadeClassifier(cascade_path)
#顔認識の実行
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
for rect in facerect:
#顔だけ切り出して保存
x = rect[0]
y = rect[1]
width = rect[2]
height = rect[3]
dst = image[y:y+height, x:x+width]
resize_image = cv2.resize(dst,(256,256))
new_image_path = current_dir + '\\joyu_face\\' + str(i) + '.jpg'
cv2.imwrite(new_image_path, resize_image)
i += 1
위 프로그램을 실행하면 joyu_face에 얼굴 이미지가 저장되므로,
이미지 이름을 horikita.jpg, hasimoto.jpg로 변경하십시오.
tashite_nidewaru.py
# -*- coding: utf-8 -*-
import cv2
import os
current_dir = os.getcwd()
image_path = current_dir + "\\joyu_face\\"
# ファイル読み込み
horikita = cv2.imread(image_path + "\\horikita.jpg")
hasimoto = cv2.imread(image_path + "\\hasimoto.jpg")
# グレースケール変換
horikita_gray = cv2.cvtColor(horikita, cv2.COLOR_BGR2GRAY)
hasimoto_gray = cv2.cvtColor(hasimoto, cv2.COLOR_BGR2GRAY)
# デフォルトの状態ではかなり気色悪い画像になってしまったため、
# 色を4種類にしてみました
for i in xrange(len(horikita_gray)):
for j in xrange(len(horikita_gray[0])):
if horikita_gray[i][j] >= 192:
horikita_gray[i][j] = 192
elif horikita_gray[i][j] >= 128:
horikita_gray[i][j] = 128
elif horikita_gray[i][j] >= 64:
horikita_gray[i][j] = 64
else:
horikita_gray[i][j] = 0
for i in xrange(len(hasimoto_gray)):
for j in xrange(len(hasimoto_gray[0])):
if hasimoto_gray[i][j] >= 192:
hasimoto_gray[i][j] = 192
elif hasimoto_gray[i][j] >= 128:
hasimoto_gray[i][j] = 128
elif hasimoto_gray[i][j] >= 64:
hasimoto_gray[i][j] = 64
else:
hasimoto_gray[i][j] = 0
horikita_hasimoto = horikita_gray / 2 + hasimoto_gray / 2
for i in xrange(len(horikita_hasimoto)):
for j in xrange(len(horikita_hasimoto[0])):
if horikita_hasimoto[i][j] >= 192:
horikita_hasimoto[i][j] = 192
elif horikita_hasimoto[i][j] >= 128:
horikita_hasimoto[i][j] = 128
elif horikita_hasimoto[i][j] >= 64:
horikita_hasimoto[i][j] = 64
else:
horikita_hasimoto[i][j] = 0
# 画像保存
new_image_path = current_dir + '\\horikita_hasimoto.jpg'
cv2.imwrite(new_image_path, horikita_hasimoto)
new_image_path = current_dir + '\\horikita.jpg'
cv2.imwrite(new_image_path, horikita_gray)
new_image_path = current_dir + '\\hasimoto.jpg'
cv2.imwrite(new_image_path, hasimoto_gray)
【결과】
더하여 2로 나눈 이미지
【감상】
제일 먼저 칼라로 시험했습니다만, 기색이 나쁜 것이 되었습니다.
하지만 흑백에서도 미인이라고는 생각되지 않네요···(; 1_1)
개선점은 많이 있을 것 같습니다.
Reference
이 문제에 관하여(호리키타 마키와 하시모토 칸나를 더하여 2로 나누어 보았다 with python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Nobu12/items/5c6c580f2264ac83260f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
제일 먼저 칼라로 시험했습니다만, 기색이 나쁜 것이 되었습니다.
하지만 흑백에서도 미인이라고는 생각되지 않네요···(; 1_1)
개선점은 많이 있을 것 같습니다.
Reference
이 문제에 관하여(호리키타 마키와 하시모토 칸나를 더하여 2로 나누어 보았다 with python), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Nobu12/items/5c6c580f2264ac83260f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)