Java Edition Face Tracking Trilogyのパート1:最速のエクスペリエンス

一緒に書く習慣を身につけましょう!「ナゲッツデイリーニュープラン・4月アップデートチャレンジ」に参加して11日目です。クリックしてイベントの詳細をご覧ください

私のGitHubへようこそ

Xinchenのすべてのオリジナル作品(サポートするソースコードを含む)は、ここに分類され、要約されています:github.com/zq2599/blog…

Java Edition FaceTrackingTrilogyシリーズについて

-「JavaEditionFaceTracking Trilogy」シリーズは、Xinchenのもう1つのオリジナル作品です。目標は、理論と実践を通じて、Javaの分野でのCamShift(連続適応平均シフト)アルゴリズムの実用化を理解することです。シリーズ全体は、次の3つの記事で構成されています。

  1. 非常に高速なエクスペリエンス:これはXinchenのオリジナル作品の主要な機能です。最初に始めて、CamShiftが最短時間と最低コストで何ができるかを理解してください。
  2. 開発と設計:これはコーディング前の準備作業であり、次のようなものがあります。それらの知識ポイントが必要ですか?ロジックとプロセスの並べ替え
  3. コーディングの練習:この記事では、正式にコーディングを開始して検証を実行します。上記の準備がすべて整った後、実際にコーディングを開始するときにスムーズになるだけでなく、Xinchenとは異なる多くのアイデアが得られます。顔を検出するだけでなく、年齢や性別をもたらすこともできますが、深層学習の推論を複数回行う必要はなく、複数の顔を検出する必要はありませんが、同時に1人または複数の人を追跡するだけです
  • さらに、「Java Edition Face Tracking Trilogy」シリーズ全体は、「JavaCV Camera Actual Combat」シリーズの第15、16、および17章である「JavaCVCameraActualCombat」シリーズの一部でもあります。

この記事の概要

  • この記事の目的は、Javaでの顔追跡の機能をすばやく体験することです。これには、理論的な知識やコーディングは含まれず、すべて実践的な操作が含まれます。次の手順で構成されます。
  1. ローカル環境を準備する
  2. Javaアプリケーション、ダイナミックリンクライブラリ、顔検出モデルファイルの3つのファイルをダウンロードします
  3. Javaアプリケーションを実行して、効果を確認します

ローカル環境を準備する

  1. インターネットに接続されたWindowsシステムを搭載したコンピューターを準備します。ここでは64ビットのwin10です。
  2. 通常はコンピュータに接続されているUSBカメラ
  3. JDKのインストール:1.8.0_291
  • 参考までに、使用しているコンピューターはSurface Pro4で、フロントカメラは問題ありません。

ダウンロードファイル

  • ダウンロードするファイルは全部で3つあり、最初の2つはCSDNからダウンロードでき(クレジットは不要)、アドレスは次のとおりです。
  1. 打包成jar的java应用:download.csdn.net/download/bo…
  2. opencv在windows环境的动态链接库:download.csdn.net/download/bo…
  • 还有一个是人脸检测的模型文件,在GitHub下载,地址是:raw.github.com/opencv/open…

  • 上述三个文件下载后,完整的存放路径分别是:

  1. java应用:C:\study\javacv\simple-grab-push-1.0-SNAPSHOT.jar
  2. 动态链接库:C:\study\javacv\lib\opencv_java453.dll
  3. 模型文件:C:\study\javacv\model\haarcascade_frontalface_alt.xml

运行java应用,验证效果

  • 进入windows命令行,执行以下命令在(注意两个参数和前面下载的文件路径有关,请您根据自己情况调整):
java ^
-Djava.library.path=C:\study\javacv\lib ^
-Dmodel.file.path=C:\study\javacv\model\haarcascade_frontalface_alt.xml ^
-jar C:\study\javacv\simple-grab-push-1.0-SNAPSHOT.jar
复制代码
  • 此时,控制台会输出以下信息:
C:\Users\12167>java ^-Djava.library.path=C:\study\javacv\lib ^-Dmodel.file.path=C:\study\javacv\model\haarcascade_frontalface_alt.xml ^-jar C:\study\javacv\simple-grab-push-1.0-SNAPSHOT.jar
17:40:54.987 [main] INFO com.bolingcavalry.grabpush.camera.PreviewCameraWithCamShift - 模型文件本地路径:C:\study\javacv\model\haarcascade_frontalface_alt.xml
17:40:57.704 [main] INFO com.bolingcavalry.grabpush.extend.CamShiftDetectService - 开始加载模型文件
17:40:58.364 [main] INFO com.bolingcavalry.grabpush.extend.CamShiftDetectService - 模型文件加载完毕,初始化完成
17:40:58.364 [main] INFO com.bolingcavalry.grabpush.camera.AbstractCameraApplication - 初始化完成,耗时[2257]毫秒,帧率[30.0],图像宽度[1280],图像高度[720]
复制代码
  • 然后会弹出预览窗口,显示摄像头拍摄到的内容
  • 现在,把那个为了盒饭跑来露脸的群众演员拉到镜头面前,预览窗口中,群众演员的脸部立即出现红框,如下图所示:

ここに画像の説明を挿入

  • 让群众演员在镜头前移动,可以看到红框会紧随面部移动(截图看不出效果,实际上视频是动态跟随的):

ここに画像の説明を挿入

  • 让群众演员在摄像头面前消失,红框也随之消失
  • 让群众演员再次回到摄像头面前,红框再次出现并跟随:

ここに画像の説明を挿入

  • 至此,体验结束,《Java版人脸跟踪三部曲》的第一部就完成了,简简单单三个文件一行命令就完成人脸跟踪的效果,此刻的您一定充满各种疑惑:
  1. 为什么叫跟踪,这是什么原理?
  2. 如果把每一帧都做人脸检测,然后绘制矩形,也能实现同样效果,这两者有区别吗?
  3. 追踪的逻辑是什么,一开始目标如何确定,追踪过程中,如果目标消失在镜头面前,程序如何处理,过一会儿再出现,程序会如何处理?
  • これらは、三部作の後半で明確にするために残されています。これは、公式のコーディング前の設計作業です。Xinchenはオリジナルであり、期待に応えられません。

ナゲッツへようこそ:プログラマーXin Chen

学習の道では、あなたは一人ではありません、XinchenOriginalはずっとあなたに同行します...

おすすめ

転載: juejin.im/post/7085239037446848543