CVLIB — как добавить размытую подповерхность к исходному изображению?

#python #opencv #computer-vision #cvlib

#python #opencv #компьютерное зрение #cvlib

Вопрос:

Друзья, мне нужно реализовать код, который размывает лица на заданных изображениях (я не разработчик, поэтому для меня это действительно сложно). Я обнаружил, что могу использовать OpenCV и cvlib для этого, и нашел образец кода (репозиторий из cvlib), который выполняет часть работы.

Я понял, что мне нужно получить подложки и применить к ним размытие лица, и я мог бы это сделать, но теперь я не знаю, как добавить размытое лицо к исходному изображению. Может ли кто-нибудь помочь мне с этим?

 import cvlib as cv
import sys
from cv2 import cv2
import os 

# read input image
image = cv2.imread('path')

# apply face detection
faces, confidences = cv.detect_face(image)

print(faces)
print(confidences)

# loop through detected faces
for face,conf in zip(faces,confidences):

    (startX,startY) = face[0],face[1]
    (endX,endY) = face[2],face[3]

    subFace = image[startY:endY,startX:endX]
    subFace = cv2.GaussianBlur(subFace,(23, 23), 30)
# display output
# press any key to close window           
cv2.imshow("face_detection", image)
cv2.waitKey()

cv2.imshow("face_detection", subFace)


# release resources
cv2.destroyAllWindows()
  

Ответ №1:

Я наконец понял, как это сделать:

 import cvlib as cv
import sys
from cv2 import cv2
import os 

# read input image
image = cv2.imread('path')

# apply face detection
faces, confidences = cv.detect_face(image)

# print the array with the coordinates and the confidence
print(faces)
print(confidences)

# loop through detected faces
for face,conf in zip(faces,confidences):

    (startX,startY) = face[0],face[1]
    (endX,endY) = face[2],face[3]
    
    # get the subface
    subFace = image[startY:endY,startX:endX]
    # apply gaussian blur over subfaces
    subFace = cv2.GaussianBlur(subFace,(23, 23), 30)
    # add the subfaces to de original image
    image[startY:startY subFace.shape[0], startX:startX subFace.shape[1]] = subFace
         
cv2.imshow("face_detection", image)
cv2.waitKey()

# save output
cv2.imwrite("face_detection.jpg", image)

# release resources
cv2.destroyAllWindows()