当前位置: 首页 > news >正文

java使用opencv

一、windows安装opencv

下载地址:https://opencv.org/releases/
在这里插入图片描述
下载后安装
在这里插入图片描述
本人安装目录
在这里插入图片描述
目录说明:

  • build:基于windows构建
    • java:开发关注
      • x64、x86对应windows操作系统位数
  • sources:开源源码

二、java使用opencv

1.项目中导入jar

  1. 打开项目结构
    在这里插入图片描述
  2. 选择安装目录下的jar包

在这里插入图片描述

三、人脸识别demo

1.demo展示

import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;public class Test {public static void main(String[] args) {imageFaceDetection();}/*** 人脸检测*/public static void imageFaceDetection() {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);// 从配置文件lbpcascade_frontalface.xml中创建一个人脸识别器,文件位于opencv安装目录中CascadeClassifier faceDetector = new CascadeClassifier("D:\\dev\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");// 读取测试图片String imgPath = "C:\\Users\\Administrator\\Desktop\\img\\111.jpg";Mat image = Imgcodecs.imread(imgPath);HighGui.imshow("获取图片", image);HighGui.waitKey(0);if (image.empty()) {throw new RuntimeException("图片内存为空");}// 检测脸部MatOfRect face = new MatOfRect();// 检测图像中的人脸faceDetector.detectMultiScale(image, face);// 匹配Rect矩阵Rect[] rects = face.toArray();System.out.println("识别人脸个数: " + rects.length);// 识别图片中的所以人脸并分别保存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, "D:\\user\\" + i + ".jpg", rect.x, rect.y, rect.width, rect.height);i++;}// 图片中人脸画框保存到本地Imgcodecs.imwrite("D:\\user\\test1.png", image);// 展示图片HighGui.imshow("人脸识别", image);HighGui.waitKey(0);}/*** 裁剪人脸** @param readPath 读取文件路径* @param outPath  写出文件路径* @param x        坐标X* @param y        坐标Y* @param width    截图宽度* @param height   截图长度*/public static void imageCut(String readPath, String outPath, int x, int y, int width, int height) {// 原始图像Mat image = Imgcodecs.imread(readPath);// 截取的区域Rect rect = new Rect(x, y, width, height);// Mat sub = new Mat(image,rect);Mat sub = image.submat(rect);Mat mat = new Mat();Size size = new Size(width, height);// 人脸进行截图并保存Imgproc.resize(sub, mat, size);Imgcodecs.imwrite(outPath, mat);}
}

2.报错分析

错误信息
Exception in thread “main” java.lang.UnsatisfiedLinkError: no opencv_java460 in java.library.path
在这里插入图片描述
需要把安装目录下面的dll文件扔到jdk的bin目录下面

在这里插入图片描述
再次运行,正常执行
后面继续再研究

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue3+gsap实现圆形路径动画
  • 【设计模式入门】设计模式全解析:23种经典模式介绍与评级指南(设计师必备)
  • volatile 关键字的使用
  • 贪心系列专题篇四
  • pikachu文件下载
  • 详解爬虫使用代理ip的几种方案
  • 【GCC】结合GPT4 延迟梯度学习:公式推导及理论分析
  • 学习记录(11):训练图片分类的算法
  • 【linux】企业级linux内核优化方案,助你构建出高效、稳定且安全的Linux系统环境
  • MySQL深分页和浅分页
  • JVM详解(个人学习笔记)
  • 基于FPGA的数字信号处理(18)--半加器和全加器
  • 嵌入式网络调试命令 ifconfig 介绍及使用方法
  • 【五大海内外高校支持】2024年数字经济与计算机科学国际学术会议(DECS2024)
  • 壁纸头像小程序uniapp版(附源码)
  • css选择器
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • HTTP那些事
  • idea + plantuml 画流程图
  • markdown编辑器简评
  • WePY 在小程序性能调优上做出的探究
  • 番外篇1:在Windows环境下安装JDK
  • 构建工具 - 收藏集 - 掘金
  • 关于 Cirru Editor 存储格式
  • 什么是Javascript函数节流?
  • #define 用法
  • #QT(串口助手-界面)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (02)Unity使用在线AI大模型(调用Python)
  • (12)Hive调优——count distinct去重优化
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (三) diretfbrc详解
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (一)SpringBoot3---尚硅谷总结
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)shell调试方法
  • (转)大型网站架构演变和知识体系
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net 反编译_.net反编译的相关问题
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET框架设计—常被忽视的C#设计技巧
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • @Autowired 和 @Resource 区别的补充说明与示例
  • @Controller和@RestController的区别?
  • @RequestMapping用法详解
  • @Service注解让spring找到你的Service bean
  • [autojs]autojs开关按钮的简单使用
  • [AutoSar]工程中的cpuload陷阱(三)测试
  • [C#] 如何调用Python脚本程序
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用