Python中如何识别图片中是否有人像?求思路
求各位大佬给点思路,有很多张图片,全部都是风景照,和人的自拍照,有什么方法可以把里面把人的自拍照片筛选出来吗?
Python中如何识别图片中是否有人像?求思路
这个应该有很多现成的库或者 API 可以做吧…
用OpenCV的人脸检测器就行,直接上代码:
import cv2
def check_if_photo_has_face(image_path):
# 加载预训练的人脸检测器
face_cascade = cv2.CascadeClassifier(
cv2.data.haarcascades + 'haarcascade_frontalface_default.xml'
)
# 读取图片并转为灰度图
img = cv2.imread(image_path)
if img is None:
return False, "无法读取图片"
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 检测人脸
faces = face_cascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30)
)
# 返回结果
has_face = len(faces) > 0
return has_face, faces
# 使用示例
image_path = "your_photo.jpg"
has_face, faces = check_if_photo_has_face(image_path)
if has_face:
print(f"检测到 {len(faces)} 张人脸")
for (x, y, w, h) in faces:
print(f"人脸位置: x={x}, y={y}, 宽度={w}, 高度={h}")
else:
print("未检测到人脸")
核心思路就是:1)用OpenCV的Haar级联分类器做人脸检测;2)把图片转成灰度图;3)调用detectMultiScale方法检测;4)看返回的人脸矩形列表是否为空。
如果要更准确的话,可以用dlib的HOG+SVM或者深度学习模型(像MTCNN、RetinaFace这些),但OpenCV这个最简单够用。
一句话总结:用OpenCV的人脸检测,简单直接。
很多图像识别库都有现成的例子吧。。
Keyword: 人脸检测
iOS 的 Core Image 就包含人脸检测功能,第三方开源库有 Dlib , Open CV
最近在看 DLib ,有 python API
https://aws.amazon.com/rekognition/
Amazon Rekognition is a service that makes it easy to add image analysis to your applications. With Rekognition, you can detect objects, scenes, and faces in images. You can also search and compare faces. Rekognition ’ s API enables you to quickly add sophisticated deep learning-based visual search and image classification to your applications.
不知道 LZ 说的人像是不是人脸。
opencv 就能用,自带的。无需训练,开箱即用。
如果找得到人脸的话,会返回人脸、眼睛、鼻子、嘴的矩形。
又拍云的人脸识别功能,能够通过 URL 访问图片时,对图片进行识别。任务以同步的方式处理,处理完成后,响应信息中返回人脸识别的信息。
具体了解可以看下:http://docs.upyun.com/cloud/face_detect/#_7
全部上传 Google Photo 然后搜索 people
同 8 楼 opencv 可以做这个事而且有训练好的模型,也有 py 包,教程详见
http://docs.opencv.org/trunk/d7/d8b/tutorial_py_face_detection.html
dlib 的误判率比 opencv 好,几行代码就可以搞定了
https://github.com/seetaface/SeetaFaceEngine
中科院山世光老师开源的 Seetaface
开源库里的一股清流,我司最近刚用这个替换了旧有算法,国人骄傲,效果很好。
face++
深度学习库 keras ,分分钟写一个
若楼主使用 c/c++ 可以参考一下这篇文章: http://www.learnopencv.com/facial-landmark-detection/


