Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Anda dapat menggunakan pemburaman wajah untuk menyembunyikan wajah seseorang, dalam video atau gambar, karena beberapa alasan. Masalah privasi dan keamanan adalah yang paling dominan. Sebagian besar platform berbagi video dan perangkat lunak pengeditan video memiliki fungsi pemburaman wajah bawaan.

Anda dapat membuat program pengaburan wajah Anda sendiri dari awal menggunakan Python dan pustaka OpenCV dan NumPy.

Menyiapkan Lingkungan Anda

Untuk menindaklanjuti dengan artikel ini, Anda harus terbiasa dengan dasar-dasar Python dan memiliki pemahaman dasar tentang menggunakan perpustakaan NumPy.

Buka IDE Python apa pun yang Anda rasa nyaman. Buat lingkungan virtual tempat Anda akan menginstal pustaka yang diperlukan. Buat file Python baru. Arahkan ke terminal dan jalankan perintah berikut untuk menginstal pustaka yang diperlukan. Lewati perpustakaan sebagai daftar yang dibatasi ruang.

instagram viewer
pip instal OpenCV-python NumPy

Anda akan menggunakan OpenCV untuk mengambil dan memproses input video dan NumPy untuk bekerja dengan array.

Setelah Anda menginstal pustaka, tunggu IDE memperbarui kerangka proyek. Saat pembaruan selesai dan lingkungan sudah siap, Anda bebas untuk memulai pengkodean.

Kode sumber lengkap tersedia di a repositori GitHub.

Mengimpor Perpustakaan yang Diperlukan

Mulailah dengan mengimpor pustaka OpenCV dan NumPy. Ini akan memungkinkan Anda untuk memanggil dan menggunakan fungsi apa pun yang mereka dukung. Impor OpenCV-python sebagai cv2.

impor cv2
impor numpy sebagai np

Modul OpenCV-python menggunakan nama cv2 sebagai konvensi yang dibuat oleh komunitas OpenCV. OpenCV-python adalah pembungkus Python dari pustaka OpenCV yang ditulis dalam C++.

Mengambil Masukan Anda

Buat variabel dan Inisialisasi VideoCapture obyek. Berikan nol sebagai argumen jika Anda ingin menggunakan kamera utama komputer Anda sebagai sumber input. Untuk menggunakan kamera eksternal yang terpasang ke komputer Anda, lewati satu. Untuk melakukan pemburaman wajah pada video yang direkam sebelumnya, lewati jalur video sebagai gantinya. Ke menggunakan kamera jarak jauh, berikan URL kamera yang berisi alamat IP dan nomor portnya.

tutup = cv2.VideoCapture(0)

Untuk melakukan pemburaman wajah pada input, Anda memerlukan tiga fungsi:

  • Fungsi yang akan melakukan pra-proses input.
  • Fungsi yang akan mengaburkan wajah di input.
  • Fungsi utama yang akan mengontrol aliran program dan menampilkan output.

Pra-pemrosesan Masukan Video

Buat fungsi input preprocessing yang akan mengambil setiap frame video input sebagai inputnya. Inisialisasi kelas CascadeClassifier yang akan Anda gunakan untuk deteksi wajah. Ubah ukuran bingkai menjadi 640 x 640 piksel. Ubah bingkai yang diubah ukurannya menjadi skala abu-abu untuk pemrosesan yang lebih mudah, dan akhirnya deteksi wajah di input dan ikat dengan persegi panjang.

defimage_preprocess(bingkai):
face_detector = cv2.CascadeClassifier (cv2.data.haarcascades
+ 'haarcascade_frontalface_default.xml')

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

gray_image = cv2.cvtColor (gambar_diubah ukurannya,
cv2.COLOR_BGR2GRAY)

face_rects = face_detector.detectMultiScale(
gambar_abu-abu, 1.04, 5, ukuran min=(20, 20))

kembali resize_image, face_rects

Fungsi ini mengembalikan tuple yang berisi gambar yang diubah ukurannya dan daftar persegi panjang yang mewakili wajah yang terdeteksi.

Memburamkan Wajah

Buat fungsi buram yang akan memburamkan wajah di input Anda. Fungsi mengambil bingkai yang diubah ukurannya dan daftar persegi panjang yang membatasi permukaan yang dikembalikan oleh fungsi preprocessing sebagai input. Loop di atas setiap persegi panjang wajah. Menghitung pusat setiap persegi panjang dan jari-jari lingkaran buram. Membuat gambar hitam yang memiliki dimensi yang sama dengan bingkai yang diubah ukurannya dengan menginisialisasi semua piksel ke nol. Menggambar lingkaran putih pada gambar hitam yang pusatnya berada di persegi panjang wajah menggunakan radius yang dihitung. Akhirnya, mengaburkan gambar pada lingkaran putih.

defface_blur(resize_frame, face_rects):
untuk (x, y, w, h) di dalam wajah_lurus:
# Menentukan pusat dan radius
# dari lingkaran buram
pusat_x = x + w // 3
pusat_y = y + t // 3
radius = h // 1

# membuat gambar hitam yang mirip
# dimensi sebagai bingkai
topeng = np.zeros((resized_frame.shape[:3]), np.uint8)

# gambar lingkaran putih di bagian muka bingkai
cv2.circle (topeng, (center_x, center_y), radius,
(255, 255, 255), -1)

# mengaburkan seluruh bingkai
gambar_kabur = cv2.medianBlur (bingkai_diubah ukurannya, 99)

# merekonstruksi bingkai:
# - piksel dari bingkai buram jika topeng > 0
# - jika tidak, ambil piksel dari bingkai aslinya
resized_frame = np.where (topeng > 0, gambar_buram,
mengubah ukuran_bingkai)

kembali mengubah ukuran_bingkai

Fungsi ini menggunakan NumPy Di mana() berfungsiuntuk merekonstruksi bingkai selama pengaburan.

Mengontrol Alur Program Anda

Buat fungsi utama yang akan bertindak sebagai titik masuk program Anda. Ini kemudian akan mengontrol aliran program. Fungsi akan memulai loop tak terbatas untuk terus menangkap bingkai input video. Panggil metode baca objek tutup untuk membaca bingkai dari kamera.

Fungsi kemudian akan meneruskan frame ke fungsi preprocessing dan meneruskan nilai yang dikembalikan ke fungsi lain, face_blur, untuk mendapatkan gambar buram. Ini kemudian mengubah ukuran bingkai yang dikembalikan oleh fungsi buram dan menampilkan hasilnya.

defutama():
ketikaBENAR:
sukses, bingkai = cap.read()
resized_input, face_rects = image_preprocess (bingkai)
blur_image = face_blur (resized_input, face_rects)

# Menampilkan gambar buram
cv2.imshow("Gambar buram", cv2.resize (blurred_image, (500, 500)))

jika cv2.waitKey(1) == ord("Q"):
merusak

Fungsi ini juga menghentikan tampilan keluaran saat pengguna menekan tombol q.

Menjalankan Program

Pastikan fungsi utama berjalan terlebih dahulu saat Anda menjalankan skrip. Kondisi ini akan salah jika Anda mengimpor skrip sebagai modul di program lain.

jika __nama__ == "__utama__":
utama()

Ini memungkinkan Anda untuk menggunakan skrip sebagai modul atau menjalankannya sebagai program mandiri. Ketika program berjalan, Anda akan melihat output yang mirip dengan ini:

Wajahnya kabur dan tidak bisa dikenali.

Aplikasi Pemburaman Wajah di Dunia Nyata

Anda dapat menerapkan pemburaman wajah di banyak jenis aplikasi untuk melindungi privasi orang. Layanan tampilan jalan dan pemetaan menggunakan pemburaman untuk memburamkan wajah orang dalam gambar yang diambil. Penegakan hukum menggunakan pengaburan wajah untuk melindungi identitas saksi.

Banyak platform berbagi video juga telah mengintegrasikan fitur pemburaman wajah untuk penggunanya. Membandingkan penggunaan pemburaman wajah di area ini akan membantu Anda mengamati bagaimana platform lain mengintegrasikan teknologinya.