Chciałbym wiedzieć, że istnieje sposób na rozmycie twarzy, które zostały automatycznie zidentyfikowane przez klasyfikator twarzy haarcascade.Jak używać opencv (python) do rozmycia twarzy?
używając poniższego kodu, jestem w stanie wykryć twarze, przyciąć obraz wokół tej twarzy lub narysować na niej prostokąt.
image = cv2.imread(imagepath)
# Specify the trained cascade classifier
face_cascade_name = "./haarcascade_frontalface_alt.xml"
# Create a cascade classifier
face_cascade = cv2.CascadeClassifier()
# Load the specified classifier
face_cascade.load(face_cascade_name)
#Preprocess the image
grayimg = cv2.cvtColor(image, cv2.cv.CV_BGR2GRAY)
grayimg = cv2.equalizeHist(grayimg)
#Run the classifiers
faces = face_cascade.detectMultiScale(grayimg, 1.1, 2, 0|cv2.cv.CV_HAAR_SCALE_IMAGE, (30, 30))
print "Faces detected"
if len(faces) != 0: # If there are faces in the images
for f in faces: # For each face in the image
# Get the origin co-ordinates and the length and width till where the face extends
x, y, w, h = [ v for v in f ]
# Draw rectangles around all the faces
cv2.rectangle(image, (x,y), (x+w,y+h), (255,255,255))
sub_face = image[y:y+h, x:x+w]
for i in xrange(1,31,2):
cv2.blur(sub_face, (i,i))
face_file_name = "./face_" + str(y) + ".jpg"
cv2.imwrite(face_file_name, sub_face)
Ale chciałbym zatrzeć twarz ludzi, aby nie można było ich rozpoznać.
Czy masz pomysł, jak to zrobić?
Dzięki za pomoc
Arnaud
Korzystanie z [tych] Funkcje (http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html) i przechodzą w podregion twojego zdjęcia zawierający twarz – Hammer
Witaj młotku, Zastanowiłem się, ale nie wiem, jak zamazać jedynie część obrazu, w której wykryto twarz. Dzięki. –
W końcu udało mi się zrobić to, co chcę. W tym celu stosuje się gaussianblur jak masz sugerowane: 'sub_face = cv2.GaussianBlur (sub_face (23, 23), 30)' potem pokrywają ten brak ostrości obrazu na nowy: 'result_image [Y: y + sub_face.shape [0], x: x + sub_face.shape [1]] = sub_face' –