Maison  >  Article  >  Java  >  Comment écrire un système de détection de cible basé sur l'intelligence artificielle à l'aide de Java

Comment écrire un système de détection de cible basé sur l'intelligence artificielle à l'aide de Java

WBOY
WBOYoriginal
2023-06-27 13:52:591562parcourir

Avec le développement croissant de la technologie de l'intelligence artificielle, les systèmes de détection de cibles jouent un rôle extrêmement important dans le domaine de la vision par ordinateur. Ce type de système peut identifier automatiquement les objets clés à partir d’images ou de vidéos pour suivre et analyser les cibles. Dans cet article, nous présenterons comment écrire un système de détection d'objets basé sur l'intelligence artificielle à l'aide de Java.

  1. Installer et configurer Java et OpenCV

Tout d'abord, nous devons installer Java et OpenCV. Java est un langage de programmation permettant d'écrire des systèmes de détection de cibles à l'aide de Java, et OpenCV est une bibliothèque de vision par ordinateur qui fournit de nombreuses API et outils pratiques pour traiter et analyser des images. Nous pouvons installer et configurer Java et OpenCV en suivant les étapes suivantes :

1.1 Installer Java JDK

Java JDK peut être téléchargé depuis le site officiel. Une fois l'installation terminée, vous devez définir les variables d'environnement JAVA_HOME et PATH. Dans les systèmes Windows, vous pouvez ajouter le contenu suivant aux variables d'environnement :

Nom de la variable : JAVA_HOME

Valeur de la variable : C:Program FilesJavajdk1.8.0_45

# 🎜 🎜#Nom de la variable : PATH

Valeur de la variable : %JAVA_HOME% dans

1.2 Installer OpenCV

OpenCV peut être téléchargé depuis le site officiel. Une fois le téléchargement terminé, décompressez le fichier et copiez-le dans le répertoire de travail de votre projet. Copiez ensuite le fichier opencv-3.4.3.jar du dossier dans le dossier lib du projet. Enfin, ajoutez le dossier de la bibliothèque locale tierce opencv uildjavad (sous Windows) ou opencv uildjavalib (sous Linux) dans le dossier de la variable d'environnement path du système.

    Charger les images et les traiter
Après avoir terminé l'installation et la configuration de Java et OpenCV, nous pouvons commencer à construire le système de détection de cible . Tout d’abord, nous devons charger l’image et effectuer quelques opérations de base. Nous pouvons utiliser le code suivant pour réaliser ces opérations :

public static void main(String[] args) {

   // 载入图像
   Mat image = Imgcodecs.imread("test.jpg");

   // 缩放图像
   Size size = new Size(800,600);
   Imgproc.resize(image,image,size);

   // 转换为灰度图像
   Mat grayImage = new Mat();
   Imgproc.cvtColor(image,grayImage,Imgproc.COLOR_BGR2GRAY);

   // 模糊处理
   Imgproc.GaussianBlur(grayImage,grayImage,new Size(3,3),0);

   // 边缘检测
   Mat edges = new Mat();
   Imgproc.Canny(grayImage,edges,50,150);

   // 显示图像
   HighGui.imshow("Test",edges);
   HighGui.waitKey(0);
   System.exit(0);
}

Dans ce code, nous utilisons d'abord la fonction Imgcodecs.imread() pour charger l'image depuis le système de fichiers local. Ensuite, nous utilisons la fonction Imgproc.resize() pour redimensionner l'image aux dimensions 800×600. Ensuite, nous convertissons l'image en niveaux de gris à l'aide de la fonction Imgproc.cvtColor(). Ensuite, nous utilisons la fonction Imgproc.GaussianBlur() pour flouter l'image en niveaux de gris afin de réduire le bruit et les interférences. Enfin, nous utilisons la fonction Imgproc.Canny() pour la détection des contours pour la détection ultérieure de la cible.

    Détection de cible
Après le traitement de base de l'image, nous pouvons démarrer la détection de cible. Afin de réaliser cette fonction, nous devons d’abord choisir un algorithme de détection de cible approprié. Dans cet article, nous utiliserons un classificateur de fonctionnalités Haar basé sur OpenCV pour la détection d'objets. Les étapes spécifiques de mise en œuvre sont les suivantes :

3.1 Choisissez le classificateur Haar approprié

Le classificateur Haar est un algorithme de détection de cible classique, et son idée de base est d'observer la forme de la caractéristiques des objets pour les identifier. Plus précisément, le classificateur Haar utilise une valeur de caractéristique interne pour représenter la cible, obtenue en calculant la différence de valeur de gris dans la zone cible. Si les caractéristiques morphologiques de l'objet cible peuvent être représentées par un ensemble de valeurs de caractéristiques, nous pouvons alors déterminer si l'objet cible existe dans une image en comparant ces valeurs de caractéristiques.

Dans cet article, nous utiliserons le classificateur de fonctionnalités Haar formé fourni par OpenCV pour la détection de cibles. Ces classificateurs contiennent déjà un grand nombre d’échantillons positifs et négatifs et peuvent être formés par rétropropagation.

3.2 Formation du classificateur Haar

Afin de démarrer la détection de cibles par intelligence artificielle, nous devons utiliser l'outil de formation intégré d'OpenCV pour entraîner le classificateur Haar. Le processus de formation nécessite un ensemble d’images d’échantillon positives et négatives. Habituellement, plus il y a d’images d’échantillon, meilleur est l’effet.

3.3 Détection de cibles

Grâce aux étapes ci-dessus, nous avons terminé la formation du classificateur Haar et pouvons l'utiliser pour la détection de cibles. En Java, nous pouvons utiliser le code suivant pour implémenter la détection de cible du classificateur Haar :

public static void main(String[] args) {

   // 载入图像
   Mat image = Imgcodecs.imread("test.jpg");

   // 装载分类器
   CascadeClassifier detector = new CascadeClassifier("classifier.xml");
   MatOfRect targets = new MatOfRect();

   // 检测目标
   detector.detectMultiScale(image,targets);

   // 在图像上标示目标
   for(Rect rect: targets.toArray()){
      Imgproc.rectangle(image,rect.tl(),rect.br(),new Scalar(0,0,255),2);
   }

   // 显示图像
   HighGui.imshow("Test",image);
   HighGui.waitKey(0);
   System.exit(0);
}

Dans ce code, nous utilisons d'abord la fonction Imgcodecs.imread() pour charger l'image depuis le fichier local système. Nous construisons ensuite un objet classificateur à l'aide de la classe CascadeClassifier et l'utilisons pour détecter l'image. Les résultats de la détection sont stockés dans un objet de type MatOfRect. Enfin, nous utilisons la fonction Imgproc.rectangle() pour marquer la cible sur l'image, et utilisons la fonction HighGui.imshow() pour afficher les résultats de détection.

    Summary
Dans cet article, nous avons présenté comment écrire un système de détection de cible basé sur l'intelligence artificielle à l'aide de Java. Nous avons d'abord présenté l'installation et la configuration de Java et OpenCV, puis démontré quelques fonctions de base de traitement d'image et enfin implémenté la détection d'objets à l'aide du classificateur de fonctionnalités Haar. Grâce à cette base de connaissances et de compétences, les lecteurs peuvent apprendre et explorer davantage des applications et des technologies plus approfondies et avancées dans les systèmes de détection de cibles, tels que YOLO, RCNN, etc., afin de mieux s'adapter à l'ère en évolution de l'intelligence artificielle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn