in stack/lambdas/rekopoc-apply-faces-to-video-docker/video_processor.py [0:0]
def anonymize_face_pixelate(image, blocks=10):
"""
Computes a pixelated blur with OpenCV
Args:
image (ndarray): The image to be blurred
blocks (int): Number of pixel blocks (default is 10)
Returns:
image (ndarray): The blurred image
"""
# divide the input image into NxN blocks
(h, w) = image.shape[:2]
x_coordinates, y_coordinates = np.linspace(0, w, blocks + 1, dtype="int"), np.linspace(0, h, blocks + 1, dtype="int")
# loop over the blocks along x and y axis
for i in range(1, len(y_coordinates)):
for j in range(1, len(x_coordinates)):
# compute the first and last (x, y)-coordinates for the current block
first_x, last_x = x_coordinates[j - 1], x_coordinates[j]
first_y, last_y = y_coordinates[i - 1], y_coordinates[i]
# extract the ROI
roi = image[first_y:last_y, first_x:last_x]
# compute the mean of the ROI
(b, g, r) = [int(x) for x in cv2.mean(roi)[:3]]
# draw a rectangle with the mean RGB values over the ROI in the original image
cv2.rectangle(image, (first_x, first_y), (last_x, last_y), (b, g, r), -1)
# return the pixelated blurred image
return image