赞
踩
- <dependency>
- <groupId>cn.lz.zy</groupId>
- <artifactId>opencv</artifactId>
- <version>4.10.0</version>
- <scope>system</scope>
- <systemPath>${project.basedir}/lib/opencv-4100.jar</systemPath>
- </dependency>
可根据自身需求设置library路径
-Djava.library.path=C:\MyFiles\Projects\Spring_Boot_Projects\opencv_demo\lib\x64
将opencv中的opencv/sources/data目录中文件复制到项目/data中。
- import org.opencv.core.*;
- import org.opencv.objdetect.CascadeClassifier;
- import org.opencv.videoio.VideoCapture;
-
- import static org.opencv.highgui.HighGui.*;
- import static org.opencv.imgproc.Imgproc.*;
-
- /**
- * @author zy
- * @date 2024/6/24
- * @Description 人脸视频测试
- */
- @Slf4j
- public class FaceDetection {
- static {
- System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
- String systemProperties = String.valueOf(System.getProperties().get("os.arch"));
- log.info("系统架构:{}", systemProperties);
- }
-
- static CascadeClassifier faceDetector = new CascadeClassifier("data/haarcascades/haarcascade_frontalface_alt.xml");
- public static void main(String[] args) {
- //获取摄像头
- VideoCapture capture = new VideoCapture(0);
- //判断摄像头是否打开
- if (!capture.isOpened()) {
- log.info("摄像头打开失败");
- return;
- }
- //循环读取摄像头数据
- while (true) {
- Mat frame = new Mat();
- //读取摄像头数据
- capture.read(frame);
- Mat grayFrame = new Mat();
- if (frame.empty()) {
- log.info("没有获取到视频流");
- break;
- }
- cvtColor(frame, grayFrame, COLOR_BGR2GRAY);
- equalizeHist(grayFrame, grayFrame);
- MatOfRect faces = new MatOfRect();
- faceDetector.detectMultiScale(grayFrame, faces);
- for (Rect rect : faces.toArray()) {
- rectangle(frame, rect, new Scalar(0, 255, 0), 2);
- }
-
- imshow("人脸检测:", frame);
- if (waitKey(1) == 27) {
- break;
- }
- }
- capture.release();//释放摄像头资源
- destroyAllWindows();//释放窗口资源
- }
- }
确保Maven引入本地JAR包的正确性。
VM Options的正确配置。
获取摄像头,并确保摄像头可用。
灰度图、人脸检测的正确调用。
资源释放。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。