最近尝试接触图片处理与图片识别的技术
研究到了OpenCV
涉及java的例子比较少
根据操作引入lib和dll后,报错java.lang.UnsatisfiedLinkError
有大佬说要加 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);不然会报错java.lang.UnsatisfiedLinkError
可是我加了依旧报错java.lang.UnsatisfiedLinkError
后来查到的解决方式如下:(本人Windows64位操作系统)
将下载的opencv\build\java\x64下面的dll文件复制到C:\Windows\System32
然后去idea启动main方法,就不报错了
赶时间粗略整理,后续完善
参考自:https://blog.csdn.net/qq_41645986/article/details/115457853
OpenCV
4.0 需要用到的动态库,如果没有改dll会
报错
, System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
报错
提示需要在jdk下有该文件,
本文件存放在/
java
path/bin/下,
该文件是64位window系统下
使用
综合下来,推荐第三种,做一个私有加过包的镜像,虽然前面麻烦点,但一次搞定,也不影响后续的发布。之后,CTRL+P+Q退出容器,
使用
命令docker ps -a 找到刚才的容器ID,将dockerfile第一句的from改成from jdklibxcb就好了,这个方法每次重新发布,重新生成了新的容器后,就需要去容器中执行一次,比较麻烦。jdklibxcb.tar为包含已经有了libxcb1的镜像包文件,这种方法每次构造镜像的时候会久一点,因为多了一步安装libxcb。修改后dockerfile变成了。
studio中碰到的jni问题
最近在做supervideo,解析youku视频地址,是加过密处理,须要用对应的key去解析,获取对应数据,在引用jni时,发现接二连三出问题,以前用eclipse时开发,直接把so文件放在libs/armeabi/下,就可以了,如果有有平台差异,也最多加个libs/armeabi-v7a之类的,在studio中,jni以前虽然写过相关工程,但是没有没有遇到相关问题,看来应了一句话:没有问题,可能以后才是最大的问题。那就总结下这两天这个接二连三的异常。
首先,在拼接好了url之后,接用把key和url去加密,调用jni方法。报出第一个错误,信息如下:
正确的方法是 将
opencv
安装路径下的
opencv
_
java
341.dll (记得是64位!!!–<F:\ProgramFiles (x86)\
opencv
\build\
java
\x64\
opencv
_
java
341.dll>)放入C:\WINDOWS\System32\ 之下,即可
启动
加载文件
System.loadLibrary( Core....
该楼层疑似违规已被系统折叠隐藏此楼查看此楼学了5天,遇到了这个问题,完全不懂啊,憋了一下午了,求大神帮助08-28 09:24:01.451: E/AndroidRuntime(2226): FATAL EXCEPTION: main08-28 09:24:01.451: E/AndroidRuntime(2226): Process: com.zjiang.dangerous, PID: 22...
java
调用
opencv
处理图像时所需的dll文件
将文件放在工程根目录,在程序开始时加载下面的语句
String relativelyPath = System.getProperty("user.dir");
System.load(relativelyPath + "\\
opencv
_
java
340-x64.dll");
如果不添加,会
报错
Exception in thread "main"
java
.
lan
g.
UnsatisfiedLinkError
: org.
opencv
.imgcodecs.Imgcodecs.imread_1(L
java
/
lan
g/String;)J