翻訳者 | Bugatti
レビュー | Chonglou
ビデオや画像で顔を隠すなど、さまざまな理由で顔のぼかしを使用することがあります。プライバシーとセキュリティへの懸念が主な理由です。ほとんどのビデオ共有プラットフォームとビデオ編集ソフトウェアには、顔ぼかし機能が組み込まれています。
Python、OpenCV、NumPy ライブラリを使用して、独自の顔ぼかしプログラムを最初から作成できます。
1. 環境の確立
この記事の学習を完了するには、Python の基本的な知識とその使用方法の基本を理解している必要があります。 NumPy ライブラリの。
使い慣れた Python IDE を開きます。仮想環境を作成して必要なライブラリをインストールします。新しい Python ファイルを作成します。ターミナルに移動し、次のコマンドを実行して必要なライブラリをインストールします。ライブラリをスペース区切りのリストとして渡します。
pip install OpenCV-python NumPy
OpenCV を使用してビデオ入力を取得および前処理し、NumPy を使用して配列を処理します。
ライブラリをインストールしたら、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()
これにより、スクリプトをモジュールとして使用したり、スタンドアロン プログラムとして実行したりできます。プログラムを実行すると、次のような出力が表示されるはずです。
顔がぼやけていて認識できません。外。
8. 顔ぼかしの実際的な応用
顔ぼかしを使用すると、さまざまな種類のアプリケーション環境でプライバシーを保護できます。ストリート ビューとマッピング サービスは、ぼかし技術を使用して画像内の人の顔を隠します。法執行機関は、証人の身元を保護するために顔ぼかし技術を使用しています。
多くのビデオ共有プラットフォームには、ユーザー向けの顔ぼかし機能も統合されています。これらの分野での顔のぼかしの使用を比較すると、他のプラットフォームがこのテクノロジーをどのように統合しているかを理解するのに役立ちます。
元のリンク: https://www.makeuseof.com/python-blur-human-faces-real-time/
以上がPython を使用してリアルタイムで顔をぼかす方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
