我的图片如下:
在此图像上,我正在运行如下面部检测代码: 如果您想运行此代码,请参见here
面部检测器:
import cv2
# Load the cascade
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# Read the input image
img = cv2.imread('5.jpg')
# Convert into grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# Detect faces
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
# Draw rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(img, (x-20, y-70), (x + w + 50, y + h + 50), (255, 0, 0), 2)
crop_img = img[y:y+h, x:x+w]
cv2.imwrite("cropped.jpg", crop_img)
作为此代码图像的输出,我得到
我想要的是:
在输出中,我需要整个图像,但要去除脸部。如何获得这个结果?
答案 0 :(得分:2)
只需使用numpy覆盖像素:
img[y1:y1+h, x1:x1+w, 0] = 0
img[y1:y1+h, x1:x1+w, 1] = 0
img[y1:y1+h, x1:x1+w, 2] = 0
请注意,numpy具有一个奇怪的索引系统,即行第一,列第二(与普通索引相反)