Mi piacerebbe sapere se c'è un modo per sfocare i volti che sono stati automaticamente identificati dal classificatore faccia haarcascade.Come usare opencv (python) per sfocare i volti?
utilizzando il codice di seguito, sono in grado di rilevare i volti, ritagliare l'immagine attorno a questa faccia o disegnare un rettangolo su di essa.
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)
Ma vorrei sfocare il volto delle persone in modo che non possano essere riconosciute.
Avete un'idea su come farlo?
Grazie per il vostro aiuto
Arnaud
Utilizzare una delle [queste] funzioni (http://docs.opencv.org/doc/tutorials/imgproc/gausian_median_blur_bilateral_filter/gausian_median_blur_bilateral_filter.html) e passare il subregion della tua immagine contenente una faccia – Hammer
Hi Hammer, Ho pensato a quello, ma non so come sfocare solo la parte dell'immagine in cui è stato rilevato il volto. Grazie. –
Finalmente riesco a fare quello che voglio. Per fare che applicare un gaussianblur come avete suggerito: 'sub_face = cv2.GaussianBlur (sub_face, (23, 23), 30)' poi ho sovrappongono questa immagine sfocatura ad uno nuovo: 'result_image [y: y + sub_face.shape [0], x: x + sub_face.shape [1]] = sub_face' –