java调用(c+opencv)的DLL

java上位机开发(c库调用) 所有的动态语言,包括在java在内,一般都会提供一个调用c库的方法。java语言的出现是在上个世纪90年代,而c/c++出现的时间要更早一点,大约提前了20多年,所以在这过程当中积累了很多的资源可以调用。此外,由于c/c++可以直接控制硬件,可以直接加速算法的执行,所以作为上位机开发的同学来说,掌握好c库调用也是很有必要的。c库调用的方法很多,比较常用的就是jni。jvm作为java虚拟机,调用class字节码,这个大家都了解。那字节码如果需要调用c库,一般会在java代码中有一个显示调用的过程,关键字是n 阅读详情

     郁闷了半天,终于解决了java本地调用c+opencv写的一个小程序。中间遇到了很多麻烦,在这写下来希望能给做相同工作的朋友一点帮助。。。

1  首先编写java代码,确定native函数格式。如下:

public class ImageParseNative{
 public int a;
 ImageParseNative()
 {
  a=10;
 }

 public native  void parse(String path, double[] average_img, double[] stdes_img);
 static {
  System.loadLibrary("ImageParseNative");
 }
 public static void main(String[] args)
 {
  ImageParseNative m=new ImageParseNative();
  String path="29_3.jpg";
  double[] average_img=new double[320];
  double[] stdes_img=new double[320];
  m.parse(path, average_img, stdes_img);
 }

}

parse函数的主要功能是用c+opencv程序实现一个提取图片的特征。

2  接下来是通过javac和javah命令生成ImageParseNative.h文件。注意:此处我写的文件放在了缺省包下,如果有包,在javah时还要对应好包的级别才能顺利生成ImageParseNative.h文件。

生成的ImageParseNative.h文件内容如下:

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class ImageParseNative */

#ifndef _Included_ImageParseNative
#define _Included_ImageParseNative
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     ImageParseNative
 * Method:    parse
 * Signature: (Ljava/lang/String;[[D[[D)V
 */
JNIEXPORT void JNICALL Java_ImageParseNative_parse
  (JNIEnv *, jclass , jstring, jdoubleArray, jdoubleArray);

#ifdef __cplusplus
}
#endif
#endif

3  用vs2008新建一个dll工程。导入生成的ImageParseNative.h的头文件。然后新建ImageParseNative.cpp文件来实现头文件里的函数。此处我实现函数比较复杂,就不列出内容。写好后,生成dll文件,关键在下列三处:

(1)一定要用Release版来编译生成dll,因为用Debug生成的用java调用时会出现“无法启动应用程序。。。”之类的错误。我就是这里郁闷了好久

(2)选择MT模式运行时库来编译。

(3)opencv的lib库要发布版的,因为此处我们是用Release版来编译的。

这样生成的DLL文件java调用时才不会出错。如果此处不是很明白的,可以加我好友,一起解决。。。

4  把生成的DLL文件和opencv用到的dll文件(cv210.dll cxcore210.dll highgui210.dll)一起拷贝到java工程根目录下。运行java程序,ok,大功告成!!!

结合网上其它资料,以本文为注意点,一定可以完成大家想完成的功能。。。我把我的程序也放在了csdn上,大家可以下载借鉴一下。希望对大家有用。。。

http://download.youkuaiyun.com/user/zsoftdevelop

Java使用OpenCV进行图像操作 OpenCV是一个开源的计算机视觉库,它提供了一系列丰富的图像处理和计算机视觉算法,包括图像读取、显示、滤波、特征检测、目标跟踪等功能。 阅读详情

相关推荐

java调用dll进行人脸识别(JNI的使用)

1.JNI部分调用JNI基类(JNIBase.java) package lveyo.bcndyl.jni.opencv; public class JNIBase { public JNIBase(){} public JNIBase(String libraryName){ loadLibrary(libraryName); } private stati

jiben071的专栏 6393

引入 opencv_java.dll文件项目中显示!

首先因为dll文件和jar文件不同所以不同用jar文件的形式进行引入 最好在工程下创建一个文件夹libdll把所需要的dll文件放入文件夹 然后通过 这样就可以调用dll文件了

大哥的叔的博客 7666

Java调用OpenCv库处理图像

我们使用需要找到两个依赖文件 jar 和 dllbuild为构建后的文件包含了 java python这里要结合java使用,所以选择Java目录 找到所需的jarjava目录下 x64 和 x86 代表不同系统 这里选择x64 找到所需的dll。

weixin_33347188的博客 1048

【OpenCV】windows环境下,java OpenCV环境搭建,java 也可以实现opencv的功能了!opencv自由了

【OpenCV】windows环境下,java OpenCV环境搭建,java 也可以实现opencv的功能了!opencv自由了

xzb5566的专栏 6858

opencv_java341的dll文件

opencv_java341的dll文件。缺少这个文件的用户可以下载此dll文件

opencv_java2410.dll

opencv_java2410.dll

Java OpenCV 安装教程

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库。OpenCV 支持多种操作系统和编程语言,如 C++、Python 和 Java,广泛应用于机器人、医疗、安防和自动驾驶等领域。下载成功后,选择安装路径。等待加载成功,完成安装。

qq_46098479的博客 2910

opencv-java4100依赖jar和dll

opencv_java4100依赖jar和dll

java 使用opencv需要的jar和dll文件(windows 和 linux )福利

如果只是在java中使用opencv的一些功能,那么可以只下载opencv的 jar和dll文件即可,特别是linux上安装opencv,难的一批,不如直接下载so文件,导入即可。 1.opencv.jar opencv.dll opencv.so 下载地址 链接: https://pan.baidu.com/s/1rM42HrtWF5Fa3UphmodfJw 提取码: znyn 注:里面有64位的jar so dll文件。版本位4.5.1(jar和dll)so的版本位(4.5.4)小版本差距不影响。

仗剑走天涯 6701

opencv_java2413.dll

某些情况下在Opencv运行情况下支持的一个DLL文件 opencv_java2413.dll

opencv-java480.dll windows 64 opencv-java480.jar下载

opencv_java下载使用

openCV图片倾斜矫正(java版)

核心思想:由于openCV是用C编写,因此对C的支持度最高,曾经尝试转换成JAVA,最终都失败了,因此核心底层代码仍然是C版的基本思路:java调用dll客户端->生成.h头文件->新建win32项目->导入相关支持和头文件->编写c代码->生成dll文件->java客户端调用具体步骤如下:1.调用dll的java代码package com.daorigin.AI.ocr;import java.i

qq_31204765的博客 1万+

Java本地调用c+opencv生成的DLL

和我一篇博文相关联的程序。 主要是用java本地调用c+opencv生成的dll dll已经生成好了,生成dll的代码还不方便放网上,有机会在分享吧。。。

Java 程序打印 OpenCV 的版本

我们可以使用 Java 程序来使用 OpenCV。OpenCV 的使用需要动态库的加载才可以。

HONEY MOOSE 1199

Vitis Model Composer闪退?手把手教你用命令行启动Vivado 2021后的System Generator

本文详细解析了Vitis Model Composer闪退问题的根本原因,并提供了命令行启动Vivado 2021后System Generator的完整解决方案。从环境变量配置、组件缺失排查到权限问题处理,手把手教你通过命令行深度排错,并分享高级自动化脚本和系统优化技巧,帮助开发者高效使用Vitis Model Composer与System Generator进行HDL开发。

weixin_26905487的博客 348

网工实验笔记:SNMP的配置

简单网络管理协议SNMP(Simple Network Management Protocol)是广泛应用于TCP/IP网络的网络管理标准协议。SNMP提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

2301_76170756的博客 2114

java人脸识别在项目中的应用(二)

前面已经说了java通过JNI调用OpenCV实现人脸识别,但上个例子程序是在没有包(package)的情况下编译的,文件只能放在项目的src目录下。这篇就解决这个问题。程序的目标是将这些文件放在com.test.detectionface包下也行运行程序。    1.JAVA的JNI部分   package com.test.detectionface; public class J...

yjdingkai的专栏 295

C++,使用Qt设计一个登录窗口

使用Qt设计一个登录界面

heyu0311的博客 2991

java调用C++注意事项

https://www.cnblogs.com/xiaocainiao2hao/p/5619862.html https://blog.youkuaiyun.com/zhangshiting/article/details/53468158 注意:javah命令是在src目录下运行的。 https://blog.youkuaiyun.com/l1028386804/article/details/46604963 ...

Mr_Curious的博客 449

OData V2 消息在 SAP UI5 中的生成、传播与治理全解

SAP UI5 的 OData V2 消息机制通过自动解析服务端响应头(sap-message)或错误体,将消息推送到全局 MessageModel,实现数据质量保障。关键点包括:1)消息通过目标路径与控件绑定联动,触发高亮等反馈;2)生命周期管理需注意避免自动刷新导致消息丢失;3)常见陷阱如批处理错误重复、内外层消息冲突等可通过精准目标路径或自定义处理器解决。代码示例展示了如何配置模型、消息模型及 MessagePopover 实现端到端消息展示,同时支持控件通过 refreshDataState 自定义

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 231

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 640

OpenCV程序封装为64位DLL给Java调用

OpenCV程序封装为64位DLL给Java调用//最近两周一直在忙一件事,刚刚做完给Java调用成功了,Mark一下。 做图像处理的经常用到OpenCV这个第三方库,函数好写,打包不好打,尤其打包成64位dll时。下面就自己这段时期的工作,分享一下,如何封装为64位dll的,并且如何给Java调用的。 1,封装为64位DLL 首先要在win x64环境下,配置好属性。由于之前一直采用自己配置

weixin_29064935的博客 3288

【深度学习】什么是交叉注意力机制?

输入序列:自注意力机制在同一个输入序列内建立注意力,交叉注意力机制在不同的输入序列间建立注意力。应用场景:自注意力机制多用于单一模态的任务(如纯文本任务),交叉注意力机制多用于多模态任务(如图像和文本的结合)。计算过程:自注意力机制的查询、键和值都来自同一个输入序列,而交叉注意力机制的查询来自一个输入序列,键和值来自另一个输入序列。

q742971636的博客 7370

java 调用 opencv 识别图片

本文介绍如何使用 java 来调用 opencv。

西凉的悲伤博客 6539

【Proteus仿真】点亮小灯系列仿真——小灯闪烁/流水灯/交通灯

本文介绍了基于AT89C51单片机的LED控制案例,共包含5个实例:1)单个LED闪烁;2)共阳极流水灯;3)共阴极流水灯;4)花样流水灯;5)交通灯模拟。每个案例详细说明了电路原理图、接线方式和控制程序实现,其中重点讲解了PWM调光原理及其在LED控制中的应用。案例由简至繁,从基础I/O控制到复杂花样显示,最后实现交通灯逻辑控制,展示了单片机在LED控制中的典型应用方法。文中提供了完整的源代码,便于读者理解和实践。

XU157303764的博客 1883

华为OD机试新系统真题-魔法咒语组合(Java/Py/C++/Go/C/Js)

华为OD机试 新系统真题【魔法咒语组合】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【魔法咒语组合】多语言题解

qq_45776114的博客 668
上一篇: 第一个android-opencv程序
下一篇: lib和dll小谈
zsoftdevelop
博客等级 码龄18年 12粉丝 9原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值