検索
ホームページテクノロジー周辺機器AIPython を使用してリアルタイムで顔をぼかす方法

翻訳者 | Bugatti

レビュー | Chonglou

ビデオや画像で顔を隠すなど、さまざまな理由で顔のぼかしを使用することがあります。プライバシーとセキュリティへの懸念が主な理由です。ほとんどのビデオ共有プラットフォームとビデオ編集ソフトウェアには、顔ぼかし機能が組み込まれています。

Python、OpenCV、NumPy ライブラリを使用して、独自の顔ぼかしプログラムを最初から作成できます。

1. 環境の確立

この記事の学習を完了するには、Python の基本的な知識とその使用方法の基本を理解している必要があります。 NumPy ライブラリの。

使い慣れた Python IDE を開きます。仮想環境を作成して必要なライブラリをインストールします。新しい Python ファイルを作成します。ターミナルに移動し、次のコマンドを実行して必要なライブラリをインストールします。ライブラリをスペース区切りのリストとして渡します。

pip install OpenCV-python NumPy

OpenCV を使用してビデオ入力を取得および前処理し、NumPy を使用して配列を処理します。

Python を使用してリアルタイムで顔をぼかす方法

ライブラリをインストールしたら、IDE がプロジェクト バックボーンを更新するまで待ちます。更新が完了し、環境の準備ができたら、コーディングを開始できます。

注: 完全なソース コードは、GitHub リポジトリ (https://github.com/makeuseofcode/Face-Blurring) にあります。

2. 必要なライブラリをインポートします

まず、OpenCV ライブラリと NumPy ライブラリをインポートします。これにより、サポートされている機能を呼び出して使用できるようになります。 OpenCV-Python を cv2 としてインポートします。

import cv2
import numpy as np

OpenCV-python モジュールは、OpenCV コミュニティによって確立された規則として cv2 という名前を使用します。 OpenCV-Python は、C で書かれた OpenCV ライブラリの Python ラッパーです。

3. 入力の取得

変数を作成し、VideoCapture オブジェクトを初期化します。コンピュータのメインカメラを入力ソースとして使用する場合は、パラメータとして 0 を渡す必要があります。コンピュータに接続された外部カメラを使用するには、1 を渡します。事前に記録されたビデオで顔のぼかしを実行するには、代わりにビデオのパスを渡します。リモート カメラを使用するには、IP アドレスとポート番号を含むカメラの URL を渡します。

cap = cv2.VideoCapture(0)

入力に対して顔のぼかしを実行するには、次の 3 つの関数が必要です。

  • 入力を前処理する関数。
  • 入力内の顔をぼかす関数。
  • プログラム フローを制御し、出力を表示する main 関数。

4. ビデオ入力前処理

入力ビデオの各フレームを入力として受け取る入力前処理関数を作成します。顔を検出するために使用する CascadeClassifier クラスを初期化します。フレームのサイズを 640*640 ピクセルに変更します。サイズ変更されたフレームをグレースケールに変換して処理し、最後に入力内の顔を検出して四角形にバインドします。

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. 顔をぼかします

入力された顔をぼかすためのぼかし関数を作成します。この関数は、前処理関数によって返された、サイズ変更されたフレームと顔を囲む四角形のリストを入力として受け取ります。面の長方形をループします。各長方形の中心とぼかし円の半径を計算します。すべてのピクセルを 0 に初期化して、サイズ変更されたフレームと同じ寸法の黒いイメージを作成します。計算された半径を使用して、顔の四角形を中心とする黒い画像上に白い円を描きます。最後に白い円の部分をぼかします。

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

この関数は、NumPy where() 関数を使用して、ブラー処理中にフレームを再構築します。

6. プログラム フローの制御

プログラムのエントリ ポイントとして機能する main 関数を作成します。その後、プログラム フローを制御します。この関数は、ビデオ入力のフレームを継続的にキャプチャする無限ループを開始します。キャップ オブジェクトの read メソッドを呼び出して、カメラからフレームを読み取ります。

次に、この関数はフレームを前処理関数に渡し、戻り値を別の関数 face_blur に渡して、ぼやけた画像を取得します。次に、blur 関数によって返されたフレームのサイズを変更し、出力を表示します。

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

この関数は、ユーザーが q キーを押したときに出力表示も終了します。

7. プログラムの実行

スクリプトを実行するときは、必ず最初に main 関数を実行してください。スクリプトが別のプログラムのモジュールとしてインポートされた場合、この条件は false になります。

if __name__ == "__main__":
main()

これにより、スクリプトをモジュールとして使用したり、スタンドアロン プログラムとして実行したりできます。プログラムを実行すると、次のような出力が表示されるはずです。

Python を使用してリアルタイムで顔をぼかす方法

顔がぼやけていて認識できません。外。

8. 顔ぼかしの実際的な応用

顔ぼかしを使用すると、さまざまな種類のアプリケーション環境でプライバシーを保護できます。ストリート ビューとマッピング サービスは、ぼかし技術を使用して画像内の人の顔を隠します。法執行機関は、証人の身元を保護するために顔ぼかし技術を使用しています。

多くのビデオ共有プラットフォームには、ユーザー向けの顔ぼかし機能も統合されています。これらの分野での顔のぼかしの使用を比較すると、他のプラットフォームがこのテクノロジーをどのように統合しているかを理解するのに役立ちます。

元のリンク: https://www.makeuseof.com/python-blur-human-faces-real-time/

以上がPython を使用してリアルタイムで顔をぼかす方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は51CTO.COMで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Langchainテキストスプリッターを使用してデータを分割する7つの方法-AnalyticsVidhyaLangchainテキストスプリッターを使用してデータを分割する7つの方法-AnalyticsVidhyaApr 19, 2025 am 10:11 AM

Langchainテキストスプリッター:効率と精度のためにLLM入力を最適化する 以前の記事では、Langchainのドキュメントローダーについて説明しました。 ただし、LLMにはコンテキストウィンドウサイズの制限(トークンで測定)があります。 この制限を超えると、データが切り捨てられます

無料生成AIコース:イノベーションの未来を先駆けて無料生成AIコース:イノベーションの未来を先駆けてApr 19, 2025 am 10:01 AM

生成AI:創造性と革新の革命 生成的AIは、ボタンに触れるだけでテキスト、画像、音楽、仮想世界を作成することにより、産業を変革しています。 その影響は、ビデオ編集、音楽制作、アート、エンターテイメント、HEAに及びます

ユニバーサルセンテンスエンコーダーとwikiqaを使用してQAモデルを作成するユニバーサルセンテンスエンコーダーとwikiqaを使用してQAモデルを作成するApr 19, 2025 am 10:00 AM

高度な質問応答のための埋め込みモデルの力を活用する 今日の情報が豊富な世界では、正確な答えを即座に得る能力が最重要です。 この記事では、堅牢な質問回答(QA)モデルの構築を示しています

トップ10は機械学習の研究論文を読む必要がありますトップ10は機械学習の研究論文を読む必要がありますApr 19, 2025 am 09:53 AM

この記事では、人工知能(AI)と機械学習(ML)に革命をもたらした10の独創的な出版物を探ります。 ニューラルネットワークとアルゴリズムの最近のブレークスルーを調べ、現代のAIを駆動するコア概念を説明します。 th

SEO代理店を置き換えるためのトップ11のAIツール - 分析VidhyaSEO代理店を置き換えるためのトップ11のAIツール - 分析VidhyaApr 19, 2025 am 09:49 AM

AIのSEOの台頭:SEO代理店を上回るトップ11ツール AIの急速な進歩は、SEOの景観を深く再形成しました。 トップ検索エンジンのランキングを目指している企業は、オンライン戦略を最適化するAIの力を活用しています。 auから

2025年に試してみるためのトップ10の無料AI遊び場 - 分析vidhya2025年に試してみるためのトップ10の無料AI遊び場 - 分析vidhyaApr 19, 2025 am 09:45 AM

2024年に最高の無料AI遊び場を探索:包括的なガイド 適切なツールとプラットフォームへのアクセスは、人工知能(AI)の進化し続ける分野での学習と革新の鍵です。 AIプレイグラウンドは素晴らしい機会を提供します

ベクトルデータベースのインデックスアルゴリズムに関する詳細なガイドベクトルデータベースのインデックスアルゴリズムに関する詳細なガイドApr 19, 2025 am 09:41 AM

導入 ベクトルデータベースは、高次元ベクトルデータを効率的に保存および取得するように設計された特殊なデータベースです。 これらのベクトルは、データポイントの機能または属性を表します。

逆拡散プロセスとは何ですか? - 分析Vidhya逆拡散プロセスとは何ですか? - 分析VidhyaApr 19, 2025 am 09:40 AM

安定した拡散:逆拡散の魔法を明らかにする 安定した拡散は、ノイズから高品質の画像を生成できる強力な生成モデルです。このプロセスには、2つの重要なステップが含まれます。フォワード拡散プロセス(以前のaで詳述されています

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター