四川省工程建设信息网站,西安哪家网站做的好,网店出售,企业网站建设原则前一阵学习opencv#xff0c;发现在做人脸识别的时候遇到一些类库不存在的情况#xff0c;查找后发现是由于拓展包没有安装完全#xff08;仅安装了基础版#xff09;。由于网络的问题#xff08;初步猜测#xff09;#xff0c;始终无法安装好拓展包。 于是另辟蹊径发现在做人脸识别的时候遇到一些类库不存在的情况查找后发现是由于拓展包没有安装完全仅安装了基础版。由于网络的问题初步猜测始终无法安装好拓展包。 于是另辟蹊径想起来之前看到过的javacv。 JavaCV可以认为是OpenCV的Java版其本质上是一个Java Interface是一个联结Java与OpenCV的桥梁所以它本质上是依赖OpenCV的。目前关于这东西能查到的文档和资料实在是太少了这个过程中着实踩了不少坑记录一下以便帮助以后的人。
1、不需要本地安装
从JavaCV 0.8版本开始OpenCV被完整地集成进了JavaCV的依赖中也就是说从这个版本以后不需要在环境中配置任何关于OpenCV的东西包括什么加载dll配置环境变量加载jar什么的完全不需要 我发现网上搜到的相当多的博客都说什么加载dll都是没用的新版本完全不需要。不要在错误的方向上一再尝试了。
2、精简引用jar包体积
我本地项目是maven以下是我的配置 propertiesjavacv.version1.5.8/javacv.versionjavacv.opencv.version4.6.0-1.5.8/javacv.opencv.versionjavacv.ffmpeg.version5.1.2-1.5.8/javacv.ffmpeg.versionjavacv.openblas.version0.3.21-1.5.8/javacv.openblas.versionjavacpp.platform.android-armandroid-arm/javacpp.platform.android-armjavacpp.platform.android-arm64android-arm64/javacpp.platform.android-arm64javacpp.platform.android-x86android-x86/javacpp.platform.android-x86javacpp.platform.android-x86_64android-x86_64/javacpp.platform.android-x86_64javacpp.platform.ios-armios-arm/javacpp.platform.ios-armjavacpp.platform.ios-arm64ios-arm64/javacpp.platform.ios-arm64javacpp.platform.ios-x86ios-x86/javacpp.platform.ios-x86javacpp.platform.ios-x86_64ios-x86_64/javacpp.platform.ios-x86_64javacpp.platform.macosx-x86_64macosx-x86_64/javacpp.platform.macosx-x86_64javacpp.platform.macosx-arm64macosx-arm64/javacpp.platform.macosx-arm64javacpp.platform.linux-armhflinux-armhf/javacpp.platform.linux-armhfjavacpp.platform.linux-arm64linux-arm64/javacpp.platform.linux-arm64javacpp.platform.linux-ppc64lelinux-ppc64le/javacpp.platform.linux-ppc64lejavacpp.platform.linux-x86linux-x86/javacpp.platform.linux-x86javacpp.platform.linux-x86_64linux-x86_64/javacpp.platform.linux-x86_64javacpp.platform.windows-x86windows-x86/javacpp.platform.windows-x86javacpp.platform.windows-x86_64windows-x86_64/javacpp.platform.windows-x86_64/propertiesdependencygroupIdorg.bytedeco/groupIdartifactIdjavacpp/artifactIdversion${javacv.version}/versionclassifier${javacpp.platform.macosx-arm64}/classifier/dependencydependencygroupIdorg.bytedeco/groupIdartifactIdopenblas/artifactIdversion${javacv.openblas.version}/versionclassifier${javacpp.platform.macosx-arm64}/classifier/dependencydependencygroupIdorg.bytedeco/groupIdartifactIdopencv/artifactIdversion${javacv.opencv.version}/versionclassifier${javacpp.platform.macosx-arm64}/classifier/dependencydependencygroupIdorg.bytedeco/groupIdartifactIdffmpeg/artifactIdversion${javacv.ffmpeg.version}/versionclassifier${javacpp.platform.macosx-arm64}/classifier/dependencydependencygroupIdorg.bytedeco/groupIdartifactIdjavacv/artifactIdversion${javacv.version}/version/dependency3、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