Rumah  >  Artikel  >  Peranti teknologi  >  Bagaimana untuk mengaburkan wajah dalam masa nyata menggunakan Python

Bagaimana untuk mengaburkan wajah dalam masa nyata menggunakan Python

WBOY
WBOYke hadapan
2023-04-07 16:43:141040semak imbas

​Penterjemah |. Bugatti

Penyemak |. Kebimbangan privasi dan keselamatan adalah sebab utama. Kebanyakan platform perkongsian video dan perisian penyuntingan video mempunyai ciri kabur muka terbina dalam.

Anda boleh mencipta program kabur muka anda sendiri dari awal menggunakan perpustakaan Python, OpenCV dan NumPy.

1. Wujudkan persekitaran

Untuk melengkapkan kajian artikel ini, anda perlu biasa dengan pengetahuan asas Python dan mempunyai pemahaman asas tentang penggunaan daripada perpustakaan NumPy.

Buka mana-mana IDE Python yang anda kenali. Cipta persekitaran maya untuk memasang perpustakaan yang diperlukan. Buat fail Python baharu. Pergi ke terminal dan jalankan arahan berikut untuk memasang perpustakaan yang diperlukan. Lulus perpustakaan sebagai senarai yang dipisahkan dengan ruang.

Anda akan menggunakan OpenCV untuk mendapatkan dan praproses input video dan NumPy untuk memproses tatasusunan.

pip install OpenCV-python NumPy

Bagaimana untuk mengaburkan wajah dalam masa nyata menggunakan PythonSetelah anda memasang pustaka, tunggu sehingga IDE mengemas kini tulang belakang projek. Setelah kemas kini selesai dan persekitaran anda sedia, anda boleh memulakan pengekodan.

Nota: Kod sumber lengkap boleh didapati dalam repositori GitHub (https://github.com/makeuseofcode/Face-Blurring).

2. Import perpustakaan yang diperlukan

Pertama, import perpustakaan OpenCV dan pustaka NumPy. Ini akan membolehkan anda memanggil dan menggunakan mana-mana fungsi yang mereka sokong. Import OpenCV-python sebagai cv2.

Modul OpenCV-python menggunakan nama cv2 sebagai konvensyen yang ditubuhkan oleh komuniti OpenCV. OpenCV-Python ialah pembungkus Python untuk perpustakaan OpenCV, yang ditulis dalam C++.

3. Dapatkan input
import cv2
import numpy as np

Buat pembolehubah dan mulakan objek VideoCapture. Jika anda ingin menggunakan kamera utama komputer anda sebagai sumber input, anda harus melepasi 0 sebagai parameter. Untuk menggunakan kamera luaran yang disambungkan ke komputer anda, lulus 1. Untuk melakukan pengaburan muka pada video yang diprarakam, lalukan laluan video tersebut. Untuk menggunakan kamera jauh, hantar URL kamera, yang mengandungi alamat IP dan nombor port.

Untuk melakukan kabur muka pada input, anda memerlukan tiga fungsi ini:

cap = cv2.VideoCapture(0)

Fungsi yang pramemproses input.

Fungsi yang akan mengaburkan muka dalam input.
  • Fungsi utama yang akan mengawal aliran program dan memaparkan output.
  • 4. Prapemprosesan input video

Buat fungsi prapemprosesan input yang mengambil setiap bingkai video input sebagai inputnya. Mulakan kelas CascadeClassifier, yang akan anda gunakan untuk mengesan wajah. Ubah saiz bingkai kepada 640*640 piksel. Tukar bingkai bersaiz semula kepada skala kelabu untuk diproses, dan akhirnya mengesan muka dalam input dan mengikatnya kepada segi empat tepat.

Fungsi ini mengembalikan tuple yang mengandungi imej diubah saiz dan senarai segi empat tepat yang mewakili wajah yang dikesan.
def image_preprocess(frame):
face_detector = cv2.CascadeClassifier(cv2.data.haarcascades
+ 'haarcascade_frontalface_default.xml')

resized_image = cv2.resize(frame, (640, 640))

gray_image = cv2.cvtColor(resized_image,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
gray_image, 1.04, 5, minSize=(20, 20))

return resized_image, face_rects

5. Mengaburkan muka

Buat fungsi kabur untuk mengaburkan muka dalam input. Fungsi ini mengambil sebagai input bingkai yang diubah saiz dan senarai segi empat tepat yang mengelilingi muka yang dikembalikan oleh fungsi prapemprosesan. Gelung melalui segi empat tepat muka. Kira pusat setiap segi empat tepat dan jejari bulatan kabur. Mencipta imej hitam dengan dimensi yang sama seperti bingkai yang diubah saiz dengan memulakan semua piksel kepada 0. Menggunakan jejari yang dikira, lukis bulatan putih pada imej hitam yang berpusat pada segi empat tepat muka. Akhirnya, ia mengaburkan imej pada bulatan putih.

Fungsi ini menggunakan fungsi NumPy where() untuk membina semula bingkai semasa proses kabur.
def face_blur(resized_frame, face_rects):
for (x, y, w, h) in face_rects:
# Specifying the center and radius
# of the blurring circle
center_x = x + w // 3
center_y = y + h // 3
radius = h // 1

# creating a black image having similar
# dimensions as the frame
mask = np.zeros((resized_frame.shape[:3]), np.uint8)

# draw a white circle in the face region of the frame
cv2.circle(mask, (center_x, center_y), radius,
 (255, 255, 255), -1)

# blurring the whole frame
blurred_image = cv2.medianBlur(resized_frame, 99)

# reconstructing the frame:
# - the pixels from the blurred frame if mask > 0
# - otherwise, take the pixels from the original frame
resized_frame = np.where(mask > 0, blurred_image,
 resized_frame)

return resized_frame

6. Kawal aliran program

Buat fungsi utama untuk berfungsi sebagai titik masuk program. Ia kemudiannya akan mengawal aliran program. Fungsi ini akan memulakan gelung tak terhingga yang secara berterusan menangkap bingkai input video. Panggil kaedah baca objek topi untuk membaca bingkai daripada kamera.

Kemudian fungsi menghantar bingkai ke fungsi prapemprosesan dan nilai pulangan ke fungsi face_blur yang lain untuk mendapatkan imej kabur. Ia kemudian mengubah saiz bingkai yang dikembalikan oleh fungsi kabur dan memaparkan output.

Fungsi ini juga menamatkan paparan output apabila pengguna menekan kekunci q.
def main():
while True:
success, frame = cap.read()
resized_input, face_rects = image_preprocess(frame)
blurred_image = face_blur(resized_input, face_rects)

# Diplaying the blurred image
cv2.imshow("Blurred image", cv2.resize(blurred_image, (500, 500)))

if cv2.waitKey(1) == ord("q"):
break

7. Jalankan program

Pastikan anda menjalankan fungsi utama dahulu semasa menjalankan skrip. Syarat ini akan menjadi palsu jika skrip diimport sebagai modul dalam program lain.

Ini membolehkan anda menggunakan skrip sebagai modul atau menjalankannya sebagai program kendiri. Apabila program berjalan, anda sepatutnya melihat output yang serupa dengan ini:
if __name__ == "__main__":
main()

Bagaimana untuk mengaburkan wajah dalam masa nyata menggunakan PythonWajah telah kabur dan tidak boleh dikenali datang keluar.

8. Aplikasi praktikal pengaburan muka

Anda boleh menggunakan pengaburan muka untuk melindungi privasi dalam pelbagai jenis persekitaran aplikasi. Perkhidmatan Street View dan pemetaan menggunakan teknologi kabur untuk mengaburkan wajah orang dalam imej. Penguatkuasaan undang-undang menggunakan teknologi pengaburan muka untuk melindungi identiti saksi.

Banyak platform perkongsian video turut menyepadukan fungsi kabur muka untuk pengguna. Membandingkan penggunaan kabur muka dalam kawasan ini boleh membantu anda melihat cara platform lain menyepadukan teknologi ini.

Pautan asal: https://www.makeuseof.com/python-blur-human-faces-real-time/

Atas ialah kandungan terperinci Bagaimana untuk mengaburkan wajah dalam masa nyata menggunakan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam