博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV在ubuntu下的编译
阅读量:6701 次
发布时间:2019-06-25

本文共 4216 字,大约阅读时间需要 14 分钟。

  hot3.png

opencv的编译

下面我们写一个shell命名为build.sh放在opencv的根目录下面,代码如下:

mkdir $1cd $1cmake -DWITH_QT=ON -DWITH_OPENGL=ON -DFORCE_VTK=ON -DWITH_TBB=ON -DWITH_GDAL=ON -DWITH_XINE=ON -DBUILD_EXAMPLES=ON -DBUILD_opencv_java=ON BUILD_opencv_test_java=OFF ..make -j8

其他编译参数请

在Windows下的编译可以直接使用CMake GUI进行设置配置

如图 输入图片说明

选择自己需要的类型的配置参数(如编译器类型,编译参数)

接下来我们运行一下

sh ./build.sh build

即可在bin目录下找到生成的opencv build

java版本的安装

1.Ant的安装(非Java可略过此处)

生成opencv的Java包一直是一个会困扰Java党萌新的问题

按照官方给出的安装教程并不会生成OpenCV的jar包
首先我们要安装ant
输入指令sudo apt-get install ant
在windows下ant 在安装ant需要去apache 的ant包并设置好系统环境变量ANT_HOME为类似D:\apache-ant-1.10.1安装目录

注:要安装oracle jdk不然有时候会出玄学问题

在上面c++安装编译的时候参数-DBUILD_opencv_java=ON就已经帮我们生成了jar的包在bin目录下

注:opencv生成的包分为静态包和动态包,推荐生成静态包,静态调用会省去许多不必要或者是不知道的动态链接库的加载。 接下来我们把包导入到idea中。 下面给出一个基于Config的opencv启动器
project/src/org/uestc/config

package org.uestc.config;import java.io.*;import java.util.*;public class mainConfig{    BufferedInputStream user_in=null;    BufferedInputStream sys_in=null;    FileOutputStream user_file=null;    FileOutputStream sys_file=null;    private String sysPath="./config/sys.properties";    private String userPath="./config/config.properties";    public mainConfig(){        try {            try {                user_in = new BufferedInputStream(new FileInputStream(this.userPath));                sys_in = new BufferedInputStream(new FileInputStream(sysPath));            } catch (IOException e) {                try {                    user_file = new FileOutputStream(userPath, true);                    sys_file = new FileOutputStream(sysPath, true);                    user_in = new BufferedInputStream(new FileInputStream(userPath));                    sys_in = new BufferedInputStream(new FileInputStream(sysPath));                    user_file.close();                    sys_file.close();                } catch (FileNotFoundException e1) {                    e1.printStackTrace();                }                System.out.println("No Config file , System will auto Created");            }        }catch (Exception e){            System.out.println("I/O Error");        }    }    private void setDefaultConfig(Map
info) throws IOException { Properties pps = new Properties(); Iterator
it=info.keySet().iterator(); while (it.hasNext()){ String key=it.next(); pps.setProperty(key,info.get(key)); } pps.store(user_file, "The New properties user_file"); } public Map
getUserConfig(){ Properties pps = new Properties(); Map
info=new HashMap
(); try { pps.load(user_in); Iterator
it=pps.stringPropertyNames().iterator(); while(it.hasNext()){ String key=it.next(); info.put(key,pps.getProperty(key)); } return info; } catch (IOException e1) { e1.printStackTrace(); } return info; }}

配置文件

project/config/config.properties

max_camera=100

入口文件

/** * Created by Summer-V on 17-4-12. */import org.opencv.videoio.VideoCapture;import org.opencv.core.*;import java.util.HashMap;import java.util.Iterator;import java.util.Map;public class Main {    public void video_start(Map
camera){ Iterator
cap=camera.keySet().iterator(); while (cap.hasNext()){ int index=cap.next(); new Thread(new Runnable() { @Override public void run() { videoViewer video=new videoViewer(); video.openWindow(index,camera.get(index),100); } }).start(); } public static void main(String[] args){ System.loadLibrary(Core.NATIVE_LIBRARY_NAME);//加载opencv库 mainConfig Config=new mainConfig(); Map
info=Config.getUserConfig(); Iterator
it=info.keySet().iterator(); while (it.hasNext()){ String key =it.next(); } VideoCapture cae=new VideoCapture(); for(int i=0;i
cap=new HashMap
(); if (cae.open(i)){ cap.put(i,"Camera"+i); video_start(cap); }else { break; } } }}

注:如果不存在引用关系的话,每一次都要加载opencv库

转载于:https://my.oschina.net/VenusV/blog/915744

你可能感兴趣的文章
Microsoft Azure Site Recovery (1) 安装服务器代理
查看>>
Vmware view 5.0 POC环境搭建参考v1.0
查看>>
程序员娶妻子的经典准则
查看>>
【点评】运维工程师的职责和前景 【第一次编辑】
查看>>
smarty配置以及变量调节器详解
查看>>
rman备份恢复命令之switch
查看>>
技术合作 索尼腾龙联手申请镜头专利
查看>>
关于 MySQL 8.0 新特性“隐藏索引”的一点思考
查看>>
使用Spring Data Redis操作Redis(二)
查看>>
Cisco c3560三层交换机配置
查看>>
SystemCenter2012SP1实践(33)离线申请证书与远程桌面证书
查看>>
Lync日常维护之二:批量修改用户所属SIP域
查看>>
docker高级应用之集群与auto scale
查看>>
Mysql高性能备份方案解决数据不间断访问(LVM快照方式备份)
查看>>
Hyper-V 3.0服务器虚拟化:打造坚固的云
查看>>
【VMware虚拟化解决方案】中小企业组建vSphere虚拟化数据中心的一点经验
查看>>
利用某游戏视频热门评论引流操作CPA
查看>>
关于node.js的web框架的应用及并发性能测试
查看>>
ext designer
查看>>
windows xp下如何安装SQL server2000企业版
查看>>