Home > Article > Backend Development > PHP and OpenCV library: How to do facial expression recognition in images?
PHP and OpenCV library: How to do facial expression recognition in images?
Introduction:
Facial expression recognition is one of the important research directions in the field of computer vision. It can be applied to many practical scenarios, such as human-computer interaction, emotion monitoring, etc. This article will introduce how to use PHP and OpenCV libraries to implement facial expression recognition in images, and attach sample code.
1. Preparation
Before we start, we need to prepare some tools and environment.
1. Install the OpenCV library
OpenCV is an open source computer vision library that provides many functions and classes related to image processing and computer vision. In order to use OpenCV, we need to install it first. The following is the command to install OpenCV on an Ubuntu system:
sudo apt-get install libopencv-dev
2. Install PHP extension
Since we are going to use PHP to write code, we also need to install the OpenCV extension for PHP. It can be installed through the following command:
sudo apt-get install php7.4-opencv
3. Prepare test images
In order to test our facial expression recognition code, we need to prepare some images. Some images containing faces and different expressions can be downloaded from the Internet and saved locally.
2. Write the code
Now we can start writing the code for facial expression recognition. The following is a simple sample code for detecting faces and recognizing expressions in images:
<?php // 导入OpenCV和PHP扩展 use OpenCVHighgui{ CV_LOAD_IMAGE_COLOR, imshow, waitKey }; use OpenCV{CascadeClassifier, Mat}; // 加载人脸检测模型 $cascade = new CascadeClassifier(); $cascade->load('haarcascade_frontalface_default.xml'); // 加载表情识别模型 $recognizer = LBPHFaceRecognizer::create(); $recognizer->read('face_recognizer.yml'); $labels = ['Angry', 'Happy', 'Neutral', 'Sad']; // 加载测试图像 $image = imread('test_image.jpg', CV_LOAD_IMAGE_COLOR); // 转换图像为灰度 $gray = cvtColor($image, CV_BGR2GRAY); // 检测人脸 $faces = []; $cascade->detectMultiScale($gray, $faces); // 对每个检测到的人脸进行表情识别 foreach ($faces as $face) { // 提取人脸 $roi = $gray->submat($face); // 调整图像大小 $resized = resize($roi, new Mat(100, 100)); // 预测表情 $label = 0; $confidence = 0; $recognizer->predict($resized, $label, $confidence); // 显示表情结果 rectangle($image, $face->x, $face->y, $face->x + $face->width, $face->y + $face->height, Scalar::all(255)); putText($image, $labels[$label], new Point($face->x, $face->y - 20), FONT_HERSHEY_SIMPLEX, 0.8, Scalar::all(255)); } // 显示图像 imshow('Facial Expression Recognition', $image); waitKey(0);
3. Run the code
After finishing writing the code, we can run it with the following command:
php facial_expression_recognition.php
After running, we should be able to see that the faces are detected in the image, and the corresponding expressions are marked on each face.
Conclusion:
By using PHP and OpenCV libraries, we can easily achieve facial expression recognition in images. This article provides a simple example code that can detect faces and recognize expressions in images. Readers can expand and optimize according to actual needs.
Note: The specific usage of the libraries and classes involved in the examples in this article may change depending on the version, please adapt according to the actual situation.
The above is the detailed content of PHP and OpenCV library: How to do facial expression recognition in images?. For more information, please follow other related articles on the PHP Chinese website!