java opencv 调用摄像头_opencv java实现调用摄像头动态识别人脸
时间: 2023-07-04 07:25:57 浏览: 109
java调用摄像头人脸采集识别.zip
您好,您可以使用 OpenCV 在 Java 中调用摄像头并实现动态识别人脸。下面是一个简单的示例代码:
```java
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;
public class CameraFaceDetection {
public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
CascadeClassifier faceDetector = new CascadeClassifier("haarcascade_frontalface_alt.xml");
VideoCapture camera = new VideoCapture(0);
if (!camera.isOpened()) {
System.out.println("Error opening camera");
return;
}
Mat frame = new Mat();
while (true) {
if (camera.read(frame)) {
Mat grayFrame = new Mat();
Imgproc.cvtColor(frame, grayFrame, Imgproc.COLOR_BGR2GRAY);
Imgproc.equalizeHist(grayFrame, grayFrame);
MatOfRect faces = new MatOfRect();
faceDetector.detectMultiScale(grayFrame, faces, 1.1, 2, 0, new Size(30, 30), new Size());
for (Rect rect : faces.toArray()) {
Imgproc.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0), 2);
}
Imgcodecs.imwrite("faceDetection.png", frame);
}
}
}
}
```
在此示例中,我们使用 OpenCV 的 `CascadeClassifier` 类来加载人脸检测器,并使用 `VideoCapture` 类从摄像头中读取帧。然后,我们将每帧转换为灰度图像,并使用 `equalizeHist` 函数增强对比度。最后,我们使用 `detectMultiScale` 函数来检测人脸,并使用 `rectangle` 函数在每个人脸周围绘制矩形。
请注意,您需要将 `haarcascade_frontalface_alt.xml` 文件放在类路径下,该文件包含用于检测人脸的分类器。您可以从 OpenCV 的 GitHub 存储库中下载此文件。
希望这可以帮助您开始使用 Java 和 OpenCV 进行摄像头人脸检测。
阅读全文