我是opencv和python的新手,正在尝试在图像中收集人脸的关键点和描述符。
我使用HAAR级联分类器与前置面模板来查找图像中的人脸。HAAR级联会给我一个标记图像中人脸位置的坐标列表。我想在这些坐标处生成一个“掩码”,以便我可以使用cv2.surf()
提取掩码区域内的关键点和描述符。
我不知道如何创建该掩码。
请尝试使用此照片作为示例进行操作。
到目前为止,这是代码:
import cv2
import numpy as np
# Load image and convert to grayscale
img = cv2.imread('testPhoto.jpg')
imgg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Look for faces in the image
cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
faceRegions = cascade.detectMultiScale(imgg)
接下来,我想使用faceRegions
中的掩码进行SURF特征提取。假设faceRegions
如下所示:
array([[488, 163, 91, 91],
[357, 184, 93, 93],
[154, 78, 107, 107]], dtype=int32)
在imgg
中发现了三个面孔,因此我想创建三个单独的掩膜,位于它们特定的位置,并具有它们特定的宽度和高度。然后让cv2.surf()
只在遮罩区域中查找。我该如何实现?
img2[y:y+height, x:x+width] = face1
,其中img2是你的新图像,y、x是新位置,但宽度和高度应与face1相同。 - Abid Rahman K