OpenCV裁剪图像并显示已删除裁剪的原始图像

时间:2019-08-18 10:35:20

标签: python python-3.x opencv computer-vision

我的图片如下:

enter image description here

在此图像上,我正在运行如下面部检测代码: 如果您想运行此代码,请参见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)

作为此代码图像的输出,我得到

enter image description here

我想要的是:

enter image description here

在输出中,我需要整个图像,但要去除脸部。如何获得这个结果?

1 个答案:

答案 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具有一个奇怪的索引系统,即行第一,列第二(与普通索引相反)