下面是一个使用 Python 进行人像图片处理的示例代码,它可以找到人脸,并记录下眼睛和嘴巴的位置。然后,根据记录的位置绘制一个简单的火柴人,最后输出火柴人图片。在运行代码之前,请确保已经安装了相应的库。

import cv2
import numpy as np

# 加载人脸识别模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_eye.xml')
mouth_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_mcs_mouth.xml')

# 读取人像图片
image = cv2.imread('portrait.jpg')

# 将图片转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 检测人脸
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# 创建火柴人图像
matchstick_man = np.zeros_like(image)

# 对每个检测到的人脸进行处理
for (x, y, w, h) in faces:
    # 检测眼睛
eyes = eye_cascade.detectMultiScale(gray[y:y+h, x:x+w])
    for (ex, ey, ew, eh) in eyes:
        # 在火柴人图像上绘制眼睛
        cv2.circle(matchstick_man, (ex+int(ew/2), ey+int(eh/2)), int(ew/8), (255, 255, 255), -1)
    
    # 检测嘴巴
mouths = mouth_cascade.detectMultiScale(gray[y:y+h, x:x+w])
    for (mx, my, mw, mh) in mouths:
        # 在火柴人图像上绘制嘴巴
        cv2.rectangle(matchstick_man, (mx, my), (mx+mw, my+mh), (255, 255, 255), -1)

# 将火柴人与人像图片叠加
result = cv2.addWeighted(image, 1, matchstick_man, 0.5, 0)

# 显示处理后的图片
cv2.imshow('Matchstick Man', result)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 保存火柴人图片
cv2.imwrite('matchstick_man.jpg', result)

要使用这段代码,你需要将'portrait.jpg'替换为你自己的人像图片路径。运行代码后,它会在人脸上的眼睛和嘴巴位置记录下来,并在另一张火柴人图片上绘制相应的眼睛和嘴巴。最后,它会将火柴人图片保存为'matchstick_man.jpg'。

Python 人脸识别: 将人像图片的眼睛和嘴巴位置记录并绘制火柴人

原文地址: https://www.cveoy.top/t/topic/bKul 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录