Implémenter l'aperçu vidéo webcam avec capture d'images en C¶
Vue d'ensemble¶
Ce tutoriel montre comment créer une application professionnelle d'aperçu vidéo webcam avec la capacité de capturer des images individuelles. Cette fonctionnalité est essentielle pour développer des applications nécessitant une analyse d'image, des capacités d'instantané ou des interfaces de caméra personnalisées.
Tutoriel vidéo étape par étape¶
Regardez notre vidéo détaillée qui couvre tous les aspects de l'intégration webcam :
Prise en main¶
Avant de plonger dans le code, vous devez configurer votre environnement de développement avec les dépendances nécessaires. Le code source complet est disponible sur GitHub pour référence :
Guide d'implémentation¶
Dépendances requises¶
Tout d'abord, assurez-vous d'avoir les paquets NuGet suivants installés :
Exemple de code source¶
L'implémentation C# suivante montre comment :
- Initialiser un composant de capture vidéo
- Se connecter à un périphérique webcam
- Afficher un aperçu vidéo en temps réel
- Capturer et sauvegarder des images individuelles en JPEG
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
// Références SDK VisioForge pour la fonctionnalité de capture vidéo
using VisioForge.Core.VideoCapture;
using VisioForge.Core.Types;
using VisioForge.Core.Types.Output;
using VisioForge.Core.Types.VideoCapture;
namespace video_preview_webcam_frame_capture
{
public partial class Form1 : Form
{
// Composant principal de capture vidéo pour gérer l'entrée caméra
private VideoCaptureCore videoCapture1;
public Form1()
{
InitializeComponent();
}
// Initialisation du formulaire — crée une nouvelle instance de VideoCaptureCore liée à notre vue vidéo
private void Form1_Load(object sender, EventArgs e)
{
// Initialiser le composant de capture vidéo avec le contrôle VideoView
videoCapture1 = new VideoCaptureCore(VideoView1 as IVideoView);
}
// Gestionnaire de clic du bouton Start — configure et démarre la capture vidéo
private async void btStart_Click(object sender, EventArgs e)
{
// Configurer le périphérique de capture vidéo par défaut (première caméra disponible)
videoCapture1.Video_CaptureDevice = new VideoCaptureSource(videoCapture1.Video_CaptureDevices()[0].Name);
// Configurer le périphérique de capture audio par défaut (premier microphone disponible)
videoCapture1.Audio_CaptureDevice = new AudioCaptureSource(videoCapture1.Audio_CaptureDevices()[0].Name);
// Définir le mode sur VideoPreview (affichage uniquement, sans enregistrement)
videoCapture1.Mode = VideoCaptureMode.VideoPreview;
// Démarrer l'aperçu vidéo de manière asynchrone
await videoCapture1.StartAsync();
}
// Gestionnaire de clic du bouton Stop — arrête la capture vidéo
private async void btStop_Click(object sender, EventArgs e)
{
// Arrêter l'aperçu vidéo de manière asynchrone
await videoCapture1.StopAsync();
}
// Gestionnaire de clic du bouton Save Frame — capture et sauvegarde l'image actuelle en JPEG
private async void btSaveFrame_Click(object sender, EventArgs e)
{
// Sauvegarder l'image actuelle en JPEG dans le dossier Images de l'utilisateur
// Le paramètre de qualité (85) spécifie le niveau de compression JPEG (0-100)
await videoCapture1.Frame_SaveAsync(
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "frame.jpg"),
ImageFormat.Jpeg,
85);
}
}
}
Décomposition du code¶
Initialisation¶
L'application commence par créer une nouvelle instance de VideoCaptureCore au chargement du formulaire, qui sert d'interface principale pour interagir avec les périphériques webcam.
Sélection du périphérique¶
Lorsque l'utilisateur clique sur le bouton Start, l'application sélectionne automatiquement les premiers périphériques de capture vidéo et audio disponibles. Dans un environnement de production, vous voudrez peut-être proposer un menu déroulant de sélection pour les utilisateurs disposant de plusieurs caméras.
Mode aperçu¶
L'application est configurée en mode VideoPreview, qui active l'affichage en temps réel sans enregistrement du flux sur disque. C'est idéal pour les applications qui n'ont besoin que d'afficher la sortie de la caméra.
Capture d'image¶
La fonctionnalité de capture d'image montre comment sauvegarder l'image vidéo actuelle en JPEG avec un niveau de qualité spécifié. L'image est sauvegardée par défaut dans le dossier Images de l'utilisateur.
Applications avancées¶
Ce code peut être étendu pour prendre en charge diverses applications du monde réel :
- Numérisation de documents
- Applications de photomaton
- Visioconférence
- Vision par ordinateur et traitement d'image
- Systèmes de sécurité et de vidéosurveillance
Ressources supplémentaires¶
- Enregistrement pré-événement — mettre en tampon la vidéo de la caméra et sauvegarder des clips à la détection de mouvement ou sur déclencheur manuel
- Capture webcam vers MP4 — enregistrer la vidéo webcam dans un fichier MP4
Visitez notre page GitHub pour explorer d'autres exemples de code et techniques d'implémentation avancées.