JavaCPP 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
JavaCPP 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
JavaCPP 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
JavaCPP 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
JavaCPP 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

JavaCPP提供了在Java中高效访问本地C++的方法。采用JNI技术实现,支持所有Java实现包括Android系统,AvianRoboVM

JavaCPP提供了一系列的Annotation将Java代码映射到C++代码,并使用一个可执行的jar包将C++代码转化为可以从JVM内调用的动态链接库文件。

Maven:

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacpp</artifactId>
    <version>0.11</version>
</dependency>

使用方法:

C++:

#include <string>

namespace LegacyLibrary {
    class LegacyClass {
        public:
            const std::string& get_property() { return property; }
            void set_property(const std::string& property) { this->property = property; }
            std::string property;
    };
}

Java:

import org.bytedeco.javacpp.*;
import org.bytedeco.javacpp.annotation.*;

@Platform(include="LegacyLibrary.h")
@Namespace("LegacyLibrary")
public class LegacyLibrary {
    public static class LegacyClass extends Pointer {
        static { Loader.load(); }
        public LegacyClass() { allocate(); }
        private native void allocate();

        // to call the getter and setter functions 
        public native @StdString String get_property(); public native void set_property(String property);

        // to access the member variable directly
        public native @StdString String property();     public native void property(String property);
    }

    public static void main(String[] args) {
        // Pointer objects allocated in Java get deallocated once they become unreachable,
        // but C++ destructors can still be called in a timely fashion with Pointer.deallocate()
        LegacyClass l = new LegacyClass();
        l.set_property("Hello World!");
        System.out.println(l.property());
    }
}
展开阅读全文

代码

评论 (9)

加载中
很强大 #JavaCPP#
2015/07/06 08:11
回复
举报
很传统的JNI调用有什么不同么? #JavaCPP#
2015/07/06 08:24
回复
举报
#JavaCPP#
2015/07/06 09:21
回复
举报
如果我会CPP要这东西有何用?如果我不会CPP要它又有何用?既然都本地方法了,何不直接上CPP #JavaCPP#
2015/07/06 09:43
回复
举报
能转模板元编程的C++么? #JavaCPP#
2015/07/07 00:20
回复
举报
有什么用? #JavaCPP#
2015/07/08 05:43
回复
举报
mark #JavaCPP#
2015/07/08 23:27
回复
举报
更多评论
暂无内容
发表于多媒体处理专区
2018/07/26 10:57

JavaCV/javacpp opencv 结合freetype显示汉字

opencv 写中文到图片上 网上有很多都是本地安装的 然后配合freetype工作 javacv使用的是javacpp 不能用c/c++的直接解决方案, 翻看了opencv的各个modules 发现在opencv_contrib的modules下有freetype这个模块 下载源码 git clone https://github.com/bytedeco/javacpp-presets/ 然后 vim opencv/cppbuild.sh 找到 找到并打开freetype模块的编译 BUILD_CONTRIB_X=".... -DBUILD_opencv_dnn_modern=OFF -DBUILD_opencv_freetype=...

0
0
发表了博客
2020/03/01 22:46

Java视频按帧保存为图片

下面是需要的jar的版本: <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv</artifactId> <version>1.4.1</version> </dependency> <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacpp</artifactId> <version>1.4.1</version> </dependency> <dependency> <groupId>org.bytedeco.javacpp-presets</groupId> <artifactId>opencv-platform</artifactId> <version>3.4.1-1.4.1</version> </depe...

0
0
发表于AI & 大数据专区
2019/09/27 18:31

error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

opencv_imgcodecs.imread 读取图片 这种情况是自己传入的图片地址不对,检查传的路径 java.lang.RuntimeException: OpenCV(4.0.1) C:\projects\javacpp-presets\opencv\cppbuild\windows-x86_64\opencv-4.0.1\modules\imgproc\src\color.cpp:181: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor' at org.bytedeco.javacpp.opencv_imgproc.cvtColor(Native Method) at org.datavec.image.loader.Nati...

0
0
发表了博客
2020/08/14 23:14

Spring Boot+Maven实现车牌训练、识别系统

目录 1、项目功能 2、项目概述 3、项目环境 之前为各位朋友分享过Python+OpenCV实现车牌检测与识别,本篇博文为各位分享Spring Boot+Maven实现车牌训练、识别系统。 1、项目功能 Spring Boot+Maven实现车牌训练、识别系统功能模块如下所示: 黄 蓝 绿 黄蓝绿车牌检测及车牌号码识别; 单张图片、多张图片并发、单图片多车牌检测及识别; 图片车牌检测训练; 图片文字识别训练; 包含两种依赖包的实现方式:基于org.bytedeco.ja...

0
0
发表了博客
2018/05/25 13:57

JAVA中通过JavaCV实现跨平台视频/图像处理-调用摄像头

一、简介   JavaCV使用来自计算机视觉领域(OpenCV, FFmpeg, libdc1394, PGR FlyCapture, OpenKinect, librealsense, CL PS3 Eye Driver, videoInput, ARToolKitPlus, flandmark, Leptonica, and Tesseract)领域的研究人员常用库的JavaCPP预设的封装。提供实用程序类,使其功能更易于在Java平台上使用,包括Android。 二、案例1:调用摄像头 (1)使用IDEA新建Maven项目,然后在pom.xml中引入下列依赖(因为要用到opencv来实现...

0
0
发表于软件架构专区
2020/08/06 00:00

毕设有着落了!一套开源的,基于SpringBoot的车牌识别系统

程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 4 分钟。 前言 这个项目是良月柒在逛社区时发现的,刚看到它,思绪直接被拉回了几年前,当初有同学的毕设就是停车场管理系统,关键的功能——车牌识别,连硬件都整上了,一整套流程跑下来,pretty...... 时间过得真快,已经在社会大学摸爬滚打好几年了。果然,鲁迅诚不欺我:学生是这个世界上最舒坦的职业~! 不说了,赶紧搞完搞完去搬砖,今晚不热还可以多...

0
0
2017/02/22 20:49

JavaCV

# JavaCV [javacv - GitHub](https://github.com/bytedeco/javacv) # 介绍 JavaCV使用[JavaCPP Presets](https://github.com/bytedeco/javacpp-presets)包装,根据调查在计算机视觉领域通常使用的类库([OpenCV](http://opencv.org/), [FFmpeg](http://ffmpeg.org/), [libdc1394](http://damien.douxchamps.net/ieee1394/libdc1394/), [PGR FlyCapture](http://www.ptgrey.com/products/pgrflycapture/), [OpenKinect](http://op...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
9 评论
220 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部