Maison Java javaDidacticiel 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

Jun 27, 2023 pm 01:52 PM
java 人工智能 目标检测

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);
}
Copier après la connexion

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);
}
Copier après la connexion

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

HyperOS 2.0 fait ses débuts avec Xiaomi 15, l'IA est au centre HyperOS 2.0 fait ses débuts avec Xiaomi 15, l'IA est au centre Sep 01, 2024 pm 03:39 PM

Récemment, la nouvelle a été annoncée selon laquelle Xiaomi lancerait la version très attendue d'HyperOS 2.0 en octobre. 1.HyperOS2.0 devrait être lancé simultanément avec le smartphone Xiaomi 15. HyperOS 2.0 améliorera considérablement les capacités de l'IA, notamment en matière de retouche photo et vidéo. HyperOS2.0 apportera une interface utilisateur (UI) plus moderne et raffinée, offrant des effets visuels plus fluides, plus clairs et plus beaux. La mise à jour HyperOS 2.0 inclut également un certain nombre d'améliorations de l'interface utilisateur, telles que des capacités multitâches améliorées, une gestion améliorée des notifications et davantage d'options de personnalisation de l'écran d'accueil. La sortie d'HyperOS 2.0 n'est pas seulement une démonstration de la force technique de Xiaomi, mais aussi de sa vision de l'avenir des systèmes d'exploitation pour smartphones.

See all articles