javacv踩坑记录

前一阵学习opencv,发现在做人脸识别的时候遇到一些类库不存在的情况,查找后发现是由于拓展包没有安装完全(仅安装了基础版)。由于网络的问题(初步猜测),始终无法安装好拓展包。
于是另辟蹊径,想起来之前看到过的javacv。


JavaCV可以认为是OpenCV的Java版,其本质上是一个Java Interface,是一个联结Java与OpenCV的桥梁,所以它本质上是依赖OpenCV的。目前,关于这东西能查到的文档和资料实在是太少了,这个过程中着实踩了不少坑,记录一下以便帮助以后的人。

1、不需要本地安装

从JavaCV 0.8版本开始,OpenCV被完整地集成进了JavaCV的依赖中,也就是说从这个版本以后不需要在环境中配置任何关于OpenCV的东西,包括什么加载dll,配置环境变量,加载jar什么的,完全不需要!!! 我发现网上搜到的相当多的博客都说什么加载dll,都是没用的,新版本完全不需要。不要在错误的方向上一再尝试了。

2、精简引用jar包体积

我本地项目是maven,以下是我的配置

	<properties><javacv.version>1.5.8</javacv.version><javacv.opencv.version>4.6.0-1.5.8</javacv.opencv.version><javacv.ffmpeg.version>5.1.2-1.5.8</javacv.ffmpeg.version><javacv.openblas.version>0.3.21-1.5.8</javacv.openblas.version><javacpp.platform.android-arm>android-arm</javacpp.platform.android-arm><javacpp.platform.android-arm64>android-arm64</javacpp.platform.android-arm64><javacpp.platform.android-x86>android-x86</javacpp.platform.android-x86><javacpp.platform.android-x86_64>android-x86_64</javacpp.platform.android-x86_64><javacpp.platform.ios-arm>ios-arm</javacpp.platform.ios-arm><javacpp.platform.ios-arm64>ios-arm64</javacpp.platform.ios-arm64><javacpp.platform.ios-x86>ios-x86</javacpp.platform.ios-x86><javacpp.platform.ios-x86_64>ios-x86_64</javacpp.platform.ios-x86_64><javacpp.platform.macosx-x86_64>macosx-x86_64</javacpp.platform.macosx-x86_64><javacpp.platform.macosx-arm64>macosx-arm64</javacpp.platform.macosx-arm64><javacpp.platform.linux-armhf>linux-armhf</javacpp.platform.linux-armhf><javacpp.platform.linux-arm64>linux-arm64</javacpp.platform.linux-arm64><javacpp.platform.linux-ppc64le>linux-ppc64le</javacpp.platform.linux-ppc64le><javacpp.platform.linux-x86>linux-x86</javacpp.platform.linux-x86><javacpp.platform.linux-x86_64>linux-x86_64</javacpp.platform.linux-x86_64><javacpp.platform.windows-x86>windows-x86</javacpp.platform.windows-x86><javacpp.platform.windows-x86_64>windows-x86_64</javacpp.platform.windows-x86_64></properties><dependency><groupId>org.bytedeco</groupId><artifactId>javacpp</artifactId><version>${javacv.version}</version><classifier>${javacpp.platform.macosx-arm64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>openblas</artifactId><version>${javacv.openblas.version}</version><classifier>${javacpp.platform.macosx-arm64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>opencv</artifactId><version>${javacv.opencv.version}</version><classifier>${javacpp.platform.macosx-arm64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>ffmpeg</artifactId><version>${javacv.ffmpeg.version}</version><classifier>${javacpp.platform.macosx-arm64}</classifier></dependency><dependency><groupId>org.bytedeco</groupId><artifactId>javacv</artifactId><version>${javacv.version}</version></dependency>

3、mac设备M1芯片,不支持imshow(”“, mat)函

这个问题困扰了我整整一天时间,最后看了下官网的问题说明,才发现mac环境不支持。
报错信息如下:

Exception in thread "main" java.lang.RuntimeException: Unknown exception.at org.bytedeco.opencv.global.opencv highqui.imshow(Native Method.at Smoother.smooth(Main.kt:13)
at Mainkt.main(Main.kt:19)
at Mainkt.main(Main.kt)

在这里插入图片描述改进后的写法如下所示:

CanvasFrame canvas = new CanvasFrame("美颜");//新建一个预览窗口
Image imageUp = ImageIO.read(new FileInputStream(new File("/Users/matt/Pictures/girl-UP.png")));
canvas.showImage(imageUp);
canvas.waitKey(0);
System.exit(0);

4、官方资料

#github
https://github.com/bytedeco/javacv#官网地址
http://bytedeco.org

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

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

相关文章

MongoDb数据库

一、命令交互 1.1 数据库命令 1.显示所有数据库&#xff1a; show dbs 2.切换到指定数据库&#xff0c;如果没有则自动创建数据库 use databaseName 3.显示当前所在数据库 db 4.删除当前数据库 use 库名 db.dropDatabase() 1.2 集合命令 1.创建集合 db.createColl…

[文档级关系抽取|ACL论文]文档级关系抽取中语言理解的基础模型

Did the Models Understand Documents? Benchmarking Models for Language Understanding in Document-Level Relation Extraction School of Computer Science, Fudan University | ACL 2023.06 | 原文链接 Background 过去的工作大多数都是从单个句子中收获更多的关系&am…

MongoDB中的$type操作符和limit与skip方法

本文主要介绍MongoDB中的$type操作符和limit与skip方法。 目录 MongoDB的$type操作符MongoDB的limit方法MongoDB的skip方法 MongoDB的$type操作符 MongoDB中的$type操作符用于检查一个字段的类型是否与指定的类型相匹配。它可以用于查询和投影操作。 $type操作符可以与以下数…

php,redis实现一个电影热度排行榜

要实现电影热度排行榜&#xff0c;需要记录每个电影的热度值&#xff0c;热度值可以根据不同的算法计算&#xff0c;例如&#xff1a;观看次数、评分数、评论数等。这里我们以观看次数为例。 首先&#xff0c;需要使用 Redis 的 Sorted Set 数据结构来存储电影的热度值和电影 …

JVS低代码表单引擎:数据校验与处理的先锋

随着信息技术的迅速发展&#xff0c;数据校验与处理已经成为了各类应用中不可或缺的一环。尤其是在涉及敏感信息&#xff0c;如密码处理时&#xff0c;其安全性和准确性显得尤为重要。JVS低代码表单引擎提供了强大的文本组件触发逻辑校验功能&#xff0c;它能够在用户填写数据的…

截取字符串

输入一个字符串和一个整数 k &#xff0c;截取字符串的前k个字符并输出。 数据范围&#xff1a;字符串长度满足 1≤n≤1000&#xff0c; 1≤k≤n 输入描述&#xff1a; 1.输入待截取的字符串 2.输入一个正整数k&#xff0c;代表截取的长度 输出描述&#xff1a;截取后的字符串…

模电·放大电路的分析方法——等效电路法

放大电路的分析方法——等效电路法 晶体管的直流模型及静态工作点的估算法晶体管共射h参数等效模型 h h h参数等效模型的由来参数的物理意义简化的h参数等效模型 r b e {r\tiny be} rbe的近似表达式 共射放大电路动态参数的分析电压放大倍数 A ˙ u \.{A}\tiny u A˙u输入电阻 …

三种配置Spring程序的方法

1 使用XML文件配置Spring程序 在XML文件中使用bean标签&#xff0c;将其交给容器管理 class: 指定bean对应的类型的全限定名称id: 用于指定一个名称&#xff0c;作为该bean的唯一标识符&#xff0c;如果不需要id&#xff0c;也可不指定该属性name: 用于指定bean的别名&#x…

【小米电脑管家】安装使用教程--非小米电脑

安装说明功能体验下载资源 Xiaomi HyperOS发布后&#xff0c;小米妙享电脑端独立版本也走向终点&#xff0c;最新的【小米电脑管家】将会内置妙享实现万物互联。那么本篇文章将分享非小米电脑用户如何绕过设备识别验证安装使用【小米电脑管家】实现万物互联 安装说明 1.解压文…

如何用Python编写俄罗斯方块Tetris游戏?

在本文中&#xff0c;我们将用Python代码构建一个令人惊叹的项目&#xff1a;俄罗斯方块游戏。在这个项目中&#xff0c;我们将使用pygame库来构建游戏。要创建此项目&#xff0c;请确保您的系统中安装了最新版本的Python。让我们开始吧&#xff01; Pygame是一组跨平台的Pyth…

wireshark过滤包小技巧

1、过滤包含某个字符串的数据包&#xff1a; 或者&#xff1a; 2、过滤包含某一连续十六进制的数据包&#xff1a; 或者&#xff1a; 3、过滤精确到位数位置 或者&#xff1a;

关于使用EB tresos出现无法激活的情况解决

EB安装完成时需要激活才能使用的&#xff0c;不然都无法建立工程。 我在安装eb studio时就是在激活方面有问题导致无法使用&#xff0c;下面讲解出现了什么问题以及我如何去解除的。 1.出现的错误提示&#xff1f; ERROR&#xff1a;flexActAPPActivationSend按照在官网中&…

低代码:轻松构建应用程序的新时代

在当今数字化时代&#xff0c;应用程序对于日常企业业务的开展&#xff0c;已经成为一种刚需。然而&#xff0c;应用程序开发的过程往往耗时耗力&#xff0c;对于企业来讲&#xff0c;是一笔不小的成本开支。低代码问世以来&#xff0c;一直在尝试为业务人员赋能&#xff0c;让…

扁平按钮样式

上图 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>扁平按钮</title><style>body {margin: 0;padding: 0;height: 100vh;display: flex;justify-content: center;ali…

Web漏洞-XSS绕过和pikachu靶场4个场景(三)

★★实战前置声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将其信息做其他用途&#xff0c;由用户承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、XSS漏洞挖掘与绕过 1.1、XSS漏洞挖掘 数据…

排序算法---冒泡排序

1. 原理 对数组进行遍历&#xff0c;每次对相邻的两个元素进行比较&#xff0c;如果大的在前面&#xff0c;则交换两个元素的位置&#xff0c;完成一趟遍历后&#xff0c;数组中最大的数值到了数组的末尾。再对前面n-1个数值进行相同的遍历。一共完成n-1趟遍历就实现了排序。 1…

代码随想录 63. 不同路径 II

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到右下…

UI界面程序鼠标右键弹出菜单的一些事

1.概述 在做客户端UI程序时&#xff0c;鼠标右键弹出菜单这种操作非常常见&#xff0c;一般在鼠标右键按下或者鼠标右键抬起事件中响应操作&#xff0c;显示菜单即可&#xff0c;但是有时涉及到鼠标的移动&#xff0c;就是鼠标按下右键且移动时&#xff0c;则不需要弹出菜单&a…

104. 二叉树的最大深度(Java)

目录 解法&#xff1a; 官方解答&#xff1a; 方法一&#xff1a;深度优先搜索 方法二&#xff1a;广度优先搜索 思路与算法 复杂度分析 时间复杂度&#xff1a; 空间复杂度&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根…

【密码学引论】数字签名

第八章 数字签名 1、数字签名体制包括两个方面&#xff1a;施加签名、验证签名 SIG(M,Kd)S VER(S,Ke)bool&#xff08;真、假&#xff09; 2、数字签名和信息加密的区别&#xff08;从密码学五个组成部分来回答 3、安全性要求&#xff1a;先签名后加密&#xff1b;针对哈希函…