2
我是opencv和python的新手,并且试图收集图像中关键点和描述符。opencv和python:如何使用cv2.surf()和掩码
我使用HAAR级联分类器和正面人脸模板在图像中查找人脸。 HAAR级联给我一个标记图像中面部的坐标列表。我想在这些坐标上生成一个“蒙版”,以便我可以使用cv2.surf()
来提取蒙版区域内的关键点和描述符。
我不知道如何创建该掩码。
尝试this photo作为一个例子来工作。
这是迄今为止代码:
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)
在此之后,我想做到SURF提取使用faceRegions
口罩。假设faceRegions
看起来像这样:
array([[488, 163, 91, 91],
[357, 184, 93, 93],
[154, 78, 107, 107]], dtype=int32)
有在imgg
发现的三个面,所以我想创建他们的具体位置三个独立的口罩其特定的宽度和高度。然后cv2.surf()
只看在蒙面的地区。我怎样才能做到这一点?
是的,我想了很多,做到了。谢谢。尽管你可以想办法在图像的特定区域放置蒙版吗? – samkhan13
如果它适合您,您可以接受答案并关闭它。另外,您可以使用相同的过程来放置它。例如'img2 [y:y + height,x:x + width] = face1'其中img2是您的新图像,y,x是新位置,但宽度和高度应与您的face1相同。 –
是的,我猜这是最简单的方法。再次感谢你 :) – samkhan13