鄂尔多斯网站建设公司小程序模板源码免费下载

news/2025/10/4 12:01:17/文章来源:
鄂尔多斯网站建设公司,小程序模板源码免费下载,网站推广服务公司,简述网站建设的一般流程1. opencv概述 OpenCV是一个开源的计算机视觉库#xff0c;它提供了一系列丰富的图像处理和计算机视觉算法#xff0c;包括图像读取、显示、滤波、特征检测、目标跟踪等功能。 opencv官网#xff1a;https://opencv.org/ opencv官网文档#xff1a;https://docs.opencv.or…1. opencv概述 OpenCV是一个开源的计算机视觉库它提供了一系列丰富的图像处理和计算机视觉算法包括图像读取、显示、滤波、特征检测、目标跟踪等功能。 opencv官网https://opencv.org/ opencv官网文档https://docs.opencv.org/4.7.0/index.html 参考教程1https://www.w3cschool.cn/opencv/ 参考教程2https://www.yiibai.com/opencv/opencv_adding_text.html 2. 安装opencv 2.1 下载opencv opencv下载https://opencv.org/releases/ 这里我们使用4.7.0版本下载到本地后双击进行安装即可。 进入到opencv的安装目录 build 基于window构建sources开源提供源码进入到build\java 目录 x64与x86目录下是对应的.dll文件代表给不同的系统使用下面的代码会使用到.dll文件 opencv-460.jar给java操作openvc的程序包 2.2 准备文件 # 1. 特征分类器windows 和 linux 中的配置文件都一样随便用哪个都行 haarcascade_frontalface_alt.xml # windows 路径 : opencv\build\etc\haarcascades # linux 路径 : /usr/local/share/opencv4/haarcascades# 2. jar 包 - 也可以直接使用 javacv 中的 opencv 包 opencv-470.jar # windows 路径 : {opencv安装目录}\opencv\build\java # linux 路径 : /usr/local/share/java/opencv4# 3. 动态库 opencv_java470.dll (windows系统使用此文件) # windows 路径 : {opencv安装目录}\opencv\build\java\{x64}/{x86} 跟据系统选择 libopencv_java470.so (linux系统使用此文件) # linux 路径 : /usr/local/share/java/opencv43. 代码实现 3.1 pom.xml添加依赖 !-- 版本的依赖与下载的opencv版本一致-- dependencygroupIdorg.bytedeco/groupIdartifactIdopencv/artifactIdversion4.7.0-1.5.9/version/dependency或 dependencygroupIdorg.bytedeco/groupIdartifactIdjavacv-platform/artifactIdversion1.5.9/version/dependency或 dependencygroupIdorg.openpnp/groupIdartifactIdopencv/artifactIdversion4.7.0-0/version/dependency以上三个依赖任选其一即可项目打包后观察一下使用哪个依赖打包后的jar文件更小 ps依赖包太大优化参考https://blog.csdn.net/u014644574/article/details/122067708 3.2 编写代码 ps代码中存在加载.dll、haarcascade_frontalface_alt.xml文件请确保文件地址正确 package com.testpro.test.opencv;import org.opencv.core.*; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier;import java.util.Arrays;public class FaceCompare {// 初始化人脸探测器static CascadeClassifier faceDetector;private static final String PATH_PREFIX C:\\Users\\dev\\Desktop\\;static int i 0;static {// 判断系统String os System.getProperty(os.name);// 加载动态库if (os ! null os.toLowerCase().startsWith(windows)) {// Windows操作系统// todo windows 系统部署加载 .dll 文件 - 路径跟据自己存放位置更改【这里需要使用绝对路径】System.load(D:\\opencv\\opencv\\build\\java\\x64\\opencv_java470.dll);} else if (os ! null os.toLowerCase().startsWith(linux)) {// Linux操作系统// todo Linux 服务器部署加载 .so 文件 - 路径跟据自己存放位置更改【是否需要绝对路径有待验证目前只在windows 系统实践过】System.load(/opt/face/libopencv_java440.so);}// 引入 特征分类器配置 文件haarcascade_frontalface_alt.xml 文件路径// 此文件在opencv的安装目录build\etc\haarcascades下可以找到String property D:\\opencv\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_alt.xml;System.out.println(property);faceDetector new CascadeClassifier(property);}public static void main(String[] args) {// 图片路径不能包含中文String str1 PATH_PREFIX 3-1.jpg;String str2 PATH_PREFIX 3-2.jpg;long start System.currentTimeMillis();double compareHist compare_image(str1, str2);System.out.println(time: (System.currentTimeMillis() - start));System.out.println(compareHist);if (compareHist 0.6) {System.out.println(人脸匹配);} else {System.out.println(人脸不匹配);}}// 灰度化人脸public static Mat conv_Mat(String img) {Mat image0 Imgcodecs.imread(img);Mat image1 new Mat();// 灰度化Imgproc.cvtColor(image0, image1, Imgproc.COLOR_BGR2GRAY);// 探测人脸MatOfRect faceDetections new MatOfRect();faceDetector.detectMultiScale(image1, faceDetections);// rect中人脸图片的范围for (Rect rect : faceDetections.toArray()) {Mat face new Mat(image1, rect);return face;}return null;}// 比较图片public static double compare_image(String img_1, String img_2) {Mat mat_1 conv_Mat(img_1);Mat mat_2 conv_Mat(img_2);Mat hist_1 new Mat();Mat hist_2 new Mat();//颜色范围MatOfFloat ranges new MatOfFloat(0f, 256f);//直方图大小 越大匹配越精确 (越慢)MatOfInt histSize new MatOfInt(10000000);Imgproc.calcHist(Arrays.asList(mat_1), new MatOfInt(0), new Mat(), hist_1, histSize, ranges);Imgproc.calcHist(Arrays.asList(mat_2), new MatOfInt(0), new Mat(), hist_2, histSize, ranges);// CORREL 相关系数double res Imgproc.compareHist(hist_1, hist_2, Imgproc.CV_COMP_CORREL);return res;}}上述代码加载.dll文件也可使用以下方式 ps:【不过以下方式需要将opencv安装目录下的build\java\x64\opencv_java470.dll文件复制到C:\Windows\System32目录下才可使用否则会报错】 // 使用此方法需将D:\opencv\opencv\build\java\x64\opencv_java470.dll文件复制到C:\Windows\System32目录下 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);如下 4. 效果 5. 附完整代码 包括 从摄像头实时人脸识别识别成功保存图片到本地 从本地视频文件中识别人脸 本地图片人脸识别识别成功并保存人脸图片到本地 package com.testpro.test.opencv;import org.opencv.core.*; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs; import org.opencv.imgproc.Imgproc; import org.opencv.objdetect.CascadeClassifier; import org.opencv.videoio.VideoCapture; import org.opencv.videoio.VideoWriter; import org.opencv.videoio.Videoio;import java.util.Arrays;/*** Opencv 图片人脸识别、实时摄像头人脸识别、视频文件人脸识别*/ public class FaceVideo {// 初始化人脸探测器static CascadeClassifier faceDetector;static int i 0;static {// 判断系统String os System.getProperty(os.name);// 加载动态库if (os ! null os.toLowerCase().startsWith(windows)) {// Windows操作系统// todo windows 系统部署加载 .dll 文件 - 路径跟据自己存放位置更改System.load(D:\\opencv\\opencv\\build\\java\\x64\\opencv_java470.dll); // ClassLoader.getSystemResource(dlls/opencv_java470.dll);} else if (os ! null os.toLowerCase().startsWith(linux)) {// Linux操作系统// todo Linux 服务器部署加载 .so 文件 - 路径跟据自己存放位置更改System.load(/opt/face/libopencv_java440.so);}// 引入 特征分类器配置 文件haarcascade_frontalface_alt.xml 文件路径String property D:\\opencv\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_alt.xml;System.out.println(property);faceDetector new CascadeClassifier(property);}private static final String PATH_PREFIX C:\\Users\\dev\\Desktop\\;public static void main(String[] args) {// 1- 从摄像头实时人脸识别识别成功保存图片到本地 // getVideoFromCamera();// 2- 从本地视频文件中识别人脸 // getVideoFromFile();// 3- 本地图片人脸识别识别成功并保存人脸图片到本地 // face(5-1.jpg);// 4- 比对本地2张图的人脸相似度 越接近1越相似double compareHist compare_image(PATH_PREFIX 5-1.jpg, PATH_PREFIX 6-1.jpg);System.out.println(compareHist);if (compareHist 0.72) {System.out.println(人脸匹配);} else {System.out.println(人脸不匹配);}}/*** OpenCV-4.7.0 从摄像头实时读取*/public static void getVideoFromCamera() {//1 如果要从摄像头获取视频 则要在 VideoCapture 的构造方法写 0VideoCapture capture new VideoCapture(0);Mat video new Mat();int index 0;if (capture.isOpened()) {while (i 3) {// 匹配成功3次退出capture.read(video);HighGui.imshow(实时人脸识别, getFace(video));index HighGui.waitKey(100);if (index 27) {capture.release();break;}}} else {System.out.println(摄像头未开启);}try {capture.release();Thread.sleep(1000);System.exit(0);} catch (InterruptedException e) {e.printStackTrace();}return;}/*** OpenCV-4.7.0 从视频文件中读取*/public static void getVideoFromFile() {VideoCapture capture new VideoCapture();capture.open(PATH_PREFIX yimi.mp4);//1 读取视频文件的路径if (!capture.isOpened()) {System.out.println(读取视频文件失败);return;}Mat video new Mat();int index 0;while (capture.isOpened()) {capture.read(video);//2 视频文件的视频写入 Mat video 中HighGui.imshow(本地视频识别人脸, getFace(video));//3 显示图像index HighGui.waitKey(100);//4 获取键盘输入if (index 27) {//5 如果是 Esc 则退出capture.release();return;}}}/*** OpenCV-4.7.0 人脸识别** param image 待处理Mat图片(视频中的某一帧)* return 处理后的图片*/public static Mat getFace(Mat image) {// 1 读取OpenCV自带的人脸识别特征XML文件(faceDetector) // CascadeClassifier facebook new CascadeClassifier(D:\\Sofeware\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml);// 2 特征匹配类MatOfRect face new MatOfRect();// 3 特征匹配faceDetector.detectMultiScale(image, face);Rect[] rects face.toArray();System.out.println(匹配到 rects.length 个人脸);if (rects ! null rects.length 1) {// 4 为每张识别到的人脸画一个圈for (int i 0; i rects.length; i) {Imgproc.rectangle(image, new Point(rects[i].x, rects[i].y), new Point(rects[i].x rects[i].width, rects[i].y rects[i].height), new Scalar(0, 255, 0));Imgproc.putText(image, Human, new Point(rects[i].x, rects[i].y), Imgproc.FONT_HERSHEY_SCRIPT_SIMPLEX, 1.0, new Scalar(0, 255, 0), 1, Imgproc.LINE_AA, false);//Mat dstimage.clone();//Imgproc.resize(image, image, new Size(300,300));}i;if (i 3) {// 获取匹配成功第10次的照片Imgcodecs.imwrite(PATH_PREFIX face.png, image);}}return image;}/*** OpenCV-4.7.0 图片人脸识别*/public static void face(String filename) {// 1 读取OpenCV自带的人脸识别特征XML文件// OpenCV 图像识别库一般位于 opencv\sources\data 下面 // CascadeClassifier facebooknew CascadeClassifier(D:\\Sofeware\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml);// 2 读取测试图片String imgPath PATH_PREFIX filename;Mat image Imgcodecs.imread(imgPath);if (image.empty()) {System.out.println(image 内容不存在);return;}// 3 特征匹配MatOfRect face new MatOfRect();faceDetector.detectMultiScale(image, face);// 4 匹配 Rect 矩阵 数组Rect[] rects face.toArray();System.out.println(匹配到 rects.length 个人脸);// 5 为每张识别到的人脸画一个圈int i 1;for (Rect rect : face.toArray()) {Imgproc.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x rect.width, rect.y rect.height),new Scalar(0, 255, 0), 3);imageCut(imgPath, PATH_PREFIX i .jpg, rect.x, rect.y, rect.width, rect.height);// 进行图片裁剪i;}// 6 展示图片HighGui.imshow(人脸识别, image);HighGui.waitKey(0);}/*** 裁剪人脸** param imagePath* param outFile* param posX* param posY* param width* param height*/public static void imageCut(String imagePath, String outFile, int posX, int posY, int width, int height) {// 原始图像Mat image Imgcodecs.imread(imagePath);// 截取的区域参数,坐标X,坐标Y,截图宽度,截图长度Rect rect new Rect(posX, posY, width, height);// 两句效果一样Mat sub image.submat(rect); // Mat sub new Mat(image, rect);Mat mat new Mat();Size size new Size(width, height);Imgproc.resize(sub, mat, size);// 将人脸进行截图并保存Imgcodecs.imwrite(outFile, mat);System.out.println(String.format(图片裁切成功裁切后图片文件为 %s, outFile));}/*** 人脸比对** param img_1* param img_2* return*/public static double compare_image(String img_1, String img_2) {Mat mat_1 conv_Mat(img_1);Mat mat_2 conv_Mat(img_2);Mat hist_1 new Mat();Mat hist_2 new Mat();//颜色范围MatOfFloat ranges new MatOfFloat(0f, 256f);//直方图大小 越大匹配越精确 (越慢)MatOfInt histSize new MatOfInt(1000);Imgproc.calcHist(Arrays.asList(mat_1), new MatOfInt(0), new Mat(), hist_1, histSize, ranges);Imgproc.calcHist(Arrays.asList(mat_2), new MatOfInt(0), new Mat(), hist_2, histSize, ranges);// CORREL 相关系数double res Imgproc.compareHist(hist_1, hist_2, Imgproc.CV_COMP_CORREL);return res;}/*** 灰度化人脸** param img* return*/public static Mat conv_Mat(String img) {Mat image0 Imgcodecs.imread(img);Mat image1 new Mat();// 灰度化Imgproc.cvtColor(image0, image1, Imgproc.COLOR_BGR2GRAY);// 探测人脸MatOfRect faceDetections new MatOfRect();faceDetector.detectMultiScale(image1, faceDetections);// rect中人脸图片的范围for (Rect rect : faceDetections.toArray()) {Mat face new Mat(image1, rect);return face;}return null;}/*** OpenCV-4.7.0 将摄像头拍摄的视频写入本地*/public static void writeVideo() {//1 如果要从摄像头获取视频 则要在 VideoCapture 的构造方法写 0VideoCapture capture new VideoCapture(0);Mat video new Mat();int index 0;Size size new Size(capture.get(Videoio.CAP_PROP_FRAME_WIDTH), capture.get(Videoio.CAP_PROP_FRAME_HEIGHT));VideoWriter writer new VideoWriter(D:/a.mp4, VideoWriter.fourcc(D, I, V, X), 15.0, size, true);while (capture.isOpened()) {capture.read(video);//2 将摄像头的视频写入 Mat video 中writer.write(video);HighGui.imshow(像头获取视频, video);//3 显示图像index HighGui.waitKey(100);//4 获取键盘输入if (index 27) {//5 如果是 Esc 则退出capture.release();writer.release();return;}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现

完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现2025-10-04 11:55 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto…

Microsoft Access SQL 查询中的通配符 - 详解

Microsoft Access SQL 查询中的通配符 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &qu…

洛谷P11738 [集训队互测 2015] 未来程序改

这道题很显然是一道编译原理的题…… 本文简单的介绍了下Lexer, Parser和Interpreter的写法(实际上写编译器需要的是CodeGen) 可以看看,但是对OI似乎没什么用懒得写这么大的模拟了,想学的可以去看看我的项目QAQ很显…

mcp 面试题

什么是 MCP(Model Context Protocol) MCP 是 OpenAI 推出的 大模型上下文交互协议。它的作用是标准化 LLM 与外部工具、数据源、事件系统的交互方式。 在没有 MCP 之前,开发者需要为每个插件单独设计接口,成本高且…

做qq空间动态皮肤网站网络营销常用的方法

个人博客:代码菌-CSDN博客 专栏:C杂货铺_代码菌的博客-CSDN博客 目录 🌈前言🌈 📁 初始化列表(灰常重要) 📂 引入 📂 概念 📂 特性 📁 拓展构…

6_什么是知识图谱

知识图谱(Knowledge Graph)是一种用于表示和存储知识的结构化数据模型。它以图的形式组织信息,其中实体(entities)作为节点,关系(relationships)作为边,形成一个相互连接的知识网络。 知识图谱的核心特点:实…

实用指南:[创业之路-645]:手机属于通信?还是属于消费类电子?还是移动互联网?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【开题答辩过程】以《基于SpringBoot+Vue+uni-app的智慧校园服务系统的设计与搭建》为例,不会开题答辩的可能进来看看

【开题答辩过程】以《基于SpringBoot+Vue+uni-app的智慧校园服务系统的设计与搭建》为例,不会开题答辩的可能进来看看pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

c 网站开发案例专业网络推广方案

C语言acm竞赛习题集锦.doc杭州电子科技大学 acm 习题精选 第 1 页 共 21 页 目录 1、 数塔问题 2 2、 并查集类问题 4 3、 递推类问题 9 4、 动态规划系列 10 5、 概率类题型 13 6、 组合数学类题型 15 7、 贪心策略 16 8、 几何问题 .19 杭州电子科技大学 acm 习题精选 第 2 页…

丽水做网站公司本地电脑做服务器建网站

0x00 简介本期主要会教大家如何从流量中还原出来文件。下面我将会用多种办法来讲解。使用系统:Kali Linux0x01 tcpxtract工具网络流量提取文件(方法1)Kali Linux默认没有安装该工具,需要自己安装安装命令:sudo apt install tcpxtract使用方法…

微信ipad协议个微机器人开发API

微信ipad协议个微机器人开发API,微信群机器人API 微信iPad协议,采用最新的ASE加密,以及最新的算法,iPad协议是一套微信个人号接口,基于web开发,它能实现微信中的百分之八十的功能,并辅助微信执行各种操作,提供…

做乒乓球网站的图片网络建设与维护是什么工作

2.1 数组 (1) 概述 定义 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识 因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引…

手机可以搭建网站么页面设计模板怎么写

谈一谈BEV和Transformer在自动驾驶中的应用 BEV和Transformer都这么火,这次就聊一聊。 结尾有资料连接 一 BEV有什么用 首先,鸟瞰图并不能带来新的功能,对规控也没有什么额外的好处。 从鸟瞰图这个名词就可以看出来,本来摄像头…

做 网站 技术支持 抓获seo优化工具推荐

1、模块化编程 c语言模块化编程实现思路设计代码 具体的程序实现代码如下所示 1:程序的头文件 2:程序的函数文件 3:程序的主文件控制函数的实现 持续更新中......

面向对象编程(OOP)的三大特性之一(封装、继承、多态)就是第八章聚焦于C++的多态(Polymorphism),这

面向对象编程(OOP)的三大特性之一(封装、继承、多态)就是第八章聚焦于C++的多态(Polymorphism),这pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: …

ai提交消息常用的 chore,原来是个单词(琐事/零散任务)+约定,用于非功能性提交

在使用 AI 辅助生成 Git 提交消息时,你经常会看到以 chore: 开头的提交信息,比如: chore: update dependencies chore: clean up unused files chore: reformat code with prettier那么,chore 到底是什么意思?✅ …

答疑解惑:无人机是否一定有主控,主控和飞控是一个东西吗,无人机是否只有飞控就可以飞行???

答疑解惑:无人机是否一定有主控,主控和飞控是一个东西吗,无人机是否只有飞控就可以飞行???相关: https://item.taobao.com/item.htm?ali_refid=a3_430582_1006%3A1123627528%3AN%3ACpoHEyrZTY3ym41xzFawEg%3D%…

健身器材网站源码广东品牌设计公司有哪些

网址如下: P2246 SAC#1 - Hello World(升级版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 刚开始是用递归做的,虽然用了哈希表优化,但是超时,只得了50 后面想到了一个新的算法,时间复杂度…

网站更换服务器对seo的影响吉安seo

前文 Flutter 是一个跨平台的开发框架,它允许开发者使用相同的代码库来构建 iOS、Android、Web 和桌面应用程序。 上文flutter开发多端平台应用的探索 上(基本操作)-CSDN博客列举了一些特定平台的case(桌面端菜单,鼠…

博物馆网站模版海外广告公司

元素&#xff1a; 用法&#xff1a; 标签名&#xff1a;{style的内容} 特点&#xff1a; 全局性&#xff0c;使用后&#xff0c;所有的相同标签都是同一种样式。 举例&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UT…