java使用opencv

news2024/12/30 2:18:13

一、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目录下面

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

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

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

相关文章

java之多线程篇

一、基本概念 1.什么是线程? 线程就是,操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。简单理解就是:应用软件中互相独立,可以同时运行的功能 2.什么是多线程? 有了多线…

高清无水印视频素材哪里找?分享几个热门的高清无水印素材网站

一个好的短视频离不开精彩的素材,但高清视频素材哪里找?今天小编就跟大家分享五个可以下载高清无水印短视频素材的网站,如果你还不知道从哪里可以下载高清视频素材,赶紧进来看看吧!~ 1、稻虎网 首推的是稻…

leetcode数论(​3044. 出现频率最高的质数)-质数判断

前言 经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。 描述 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格,你可以按以下方式生成数字: 最多有 8 条路径可以选择&#xff1…

宝兰德JVM参数查看及优化

最近生产环境宝兰德服务总是莫名奇妙的宕掉,很是搞人心态(幸好是集群服务器多,总有一台提供服务),初步排查是内存溢出导致,需要进行宝兰德JVM进行调整 调整宝兰德(BES)JVM参数通常涉…

Spring源码解析(29)之AOP动态代理对象创建过程分析

一、前言 在上一节中我们已经介绍了在createBean过程中去执行AspectJAutoProxyCreator的after方法,然后去获取当前bean适配的advisor,如果还不熟悉的可以去看下之前的博客,接下来我们分析Spring AOP是如何创建代理对象的,在此之前…

38. 115.不同的子序列,583. 两个字符串的删除操作,72. 编辑距离,编辑距离总结篇

确定dp数组以及下标的含义。dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。确定递推公式。这一类问题,基本是要分析两种情况:s[i - 1] 与 t[j - 1]相等;s[i - 1] 与 t[j - 1] 不相等。当s[i - 1] 与 t[j -…

【屏驱MCU】RT-Thread 文件系统接口解析

本文主要介绍【屏驱MCU】基于RT-Thread 系统的文件系统原理介绍与代码接口梳理 目录 0. 个人简介 && 授权须知1. 文件系统架构1.1 虚拟文件系统目录架构 2. menuconfig 分析3. 代码接口分析3.1 DFS框架挂载目录3.2 【FAL抽象层】分区表和设备表3.3 如何将【文件路径】挂…

计算机毕业设计PySpark+Django考研推荐系统 考研分数线预测 中公考研爬虫 混合神经网络推荐算法 考研可视化 机器学习 深度学习 大数据毕业设计

《PySparkDjango考研推荐系统》开题报告 一、研究背景与意义 1.1 研究背景 随着社会对高学历人才需求的不断增加,研究生入学考试(考研)已成为众多大学毕业生追求深造的重要途径。然而,考研涉及的知识面广泛且复杂,考…

Unity补完计划 之Tilemap

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 1.Tilemap 是什么 Q:和 SpriteShape有什么区别? A:tilemap强项在于做重的复背景&…

产品经理-​桌面端、手机端、电视端、平板端在设计上的异同(29)

在互联网产品当中,产品形态,pc网页端,客户端,安卓,苹果端,小程序端等 不同的设备,交互设计、产品设计是不一样的,面对的用户群体不一样,产品的设计,规则也是不一样的 这个考查的是PM的交互设计知识,需要知道一般性的交互设计原则与各端设计差异 互联网的各端产品&am…

树莓派新版本在interface options中找不到camera选项

文章目录 问题原因: 操作方法: 1.系统升级 2. 安装libcamera 3. 测试拍照 4. 拍照和视频 5. 查看图片 问题原因: 版本问题,自2023.10之后的新版本中,树莓派去除了原先使用的picamera库,所以不能通过…

Unity补完计划之 Tile Palette

1.Tile Palette Creating a Tile Palette - Unity 手册 瓦片调色板(Tile Palette)是 Unity 引擎中用于在瓦片地图上进行绘制的工具。它允许您选择和管理颜色、纹理和瓦片,以便在游戏场景中创建地图、背景和其他2D元素 说白了,Ti…

win11启动IIS服务配置成web服务器·

为什么要将本地配置为 Web 服务器? 在 Web 开发过程中,将本地配置为 Web 服务器有诸多好处: 实时预览: 修改代码后,无需每次都上传到远程服务器,即可在本地浏览器中实时查看效果。 离线开发: 无需依赖网络连接&#x…

如何搭建一个圈子社区系统?开源社交陪玩交友圈子论坛帖子系统保姆级搭建教程!

整体部署流程如下: 1.获取源码/前后端分离,前端Uniapp vue2.0 后端thinkphp6(Gitee直达) 2.服务器安装宝塔(已有宝塔请安装环境,Nginx或者Apache/ php 7.3/ mysql 5.6 ) 3.进入宝塔添加网站&…

实验8-1-5 使用函数的选择法排序

本题要求实现一个用选择法对整数数组进行简单排序的函数。 函数接口定义: void sort( int a[], int n );其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。 输入样例: …

XFS超级块介绍-xfs_sb

XFS超级块介绍 与其他 Unix 文件系统一样,XFS 的超级块在文件系统的第一个扇区,它帮助解码文件系统。超级块占用每个 XFS AG 的前 512 个字节。主超级块是位于文件系统前面的 AG 0 中的超级块,其他 AG 中的超级块用于冗余。目前仅使用超级块…

leetcode-238. 除自身以外数组的乘积

题目描述 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(…

【Nuxt】自定义插件和生命周期

自定义插件 方式一: app.vue // 创建插件(在app.vue中创建全局可以使用 而在某个页面中创建只有该页面可以使用) // 方式一: const nuxtApp useNuxtApp(); nuxtApp.provide("formDate", () > {return "2023-12-12"; }) nuxtAp…

vue相关

1,Object.defineProperty和Proxy区别 定义、优缺点、区别 Object.defineProperty:vue2中实现数据监听/响应式的核心API。 Object.defineProperty遍历监听(observer)vue对象中的所有属性:data,props,comp…

基于深度学习的太阳暗条检测(2020年以来)

A universal method for solar filament detection from Hα observations using semi-supervised deep learning A&A, 686, A213 (2024) A universal method for solar filament detection from Hα observations using semi-supervised deep learning (aanda.org) ABS…