#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()