OpenCV中world模块介绍

news2024/10/6 14:05:26

      OpenCV中有很多模块,模块间保持最小的依赖关系,用户可以根据自己的实际需要链接相关的库,而不需链接所有的库,这样在最终交付应用程序时可以减少总库的大小。但如果需要依赖OpenCV的库太多,有时会带来不方便,此时可以使用OpenCV的world模块。

      OpenCV中的world模块,也称为超级模块(super-module),它结合了用户选择的所有其它模块。它是一个一体化(all-in-one)模块,具有所有库的功能。使用world模块可能会使应用程序的编译时间略有增加。

      目前OpenCV最新发布版本为4.8.1,编译不带world模块的动态库,在windows下会有58个动态库。在windows上使用vs2022及在linux上使用g++ 9的脚本build.sh如下所示:

#! /bin/bash

if [ $# != 2 ]; then
    echo "Error: requires two parameters: 1: windows or linux; 2: relese or debug"
    echo "For example: $0 windows debug"
    exit -1
fi

if [ $1 != "windows" ] && [ $1 != "linux" ]; then
    echo "Error: the first parameter can only be windows or linux"
    exit -1
fi

if [ $2 != "release"  ] && [ $2 != "debug" ]; then
    echo "Error: the second parameter can only be release or debug"
    exit -1
fi

if [[ ! -d "build" ]]; then
    mkdir build
    cd build
else
    cd build
fi

if [ $1 == "windows" ] && [ $2 == "release" ]; then
    cmake \
        -G"Visual Studio 17 2022" -A x64 \
        -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_CONFIGURATION_TYPES=Release \
        -DBUILD_SHARED_LIBS=ON \
        -DBUILD_opencv_world=ON \
        -DBUILD_PERF_TESTS=OFF \
        -DBUILD_TESTS=OFF \
        -DCMAKE_INSTALL_PREFIX=../install_4.8.1/ \
        -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
        ..
    cmake --build . --target install --config release
fi

if [ $1 == "windows" ] && [ $2 == "debug" ]; then
    cmake \
        -G"Visual Studio 17 2022" -A x64 \
        -DCMAKE_BUILD_TYPE=Debug \
        -DCMAKE_CONFIGURATION_TYPES=Debug \
        -DBUILD_SHARED_LIBS=ON \
        -DBUILD_opencv_world=ON \
        -DBUILD_PERF_TESTS=OFF \
        -DBUILD_TESTS=OFF \
        -DCMAKE_INSTALL_PREFIX=../install_4.8.1/ \
        -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
        ..
    cmake --build . --target install --config debug
fi

if [ $1 == "linux" ] && [ $2 == "release" ]; then
    cmake \
        -DCMAKE_C_COMPILER=/usr/bin/gcc-9 \
        -DCMAKE_CXX_COMPILER=/usr/bin/g++-9 \
        -DCMAKE_BUILD_TYPE=Release \
        -DBUILD_SHARED_LIBS=ON \
        -DBUILD_opencv_world=ON \
        -DBUILD_PERF_TESTS=OFF \
        -DBUILD_TESTS=OFF \
        -DCMAKE_INSTALL_PREFIX=../install_4.8.1/release/ \
        -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
        ..
    make -j4
    make install
fi

if [ $1 == "linux" ] && [ $2 == "debug" ]; then
    cmake \
        -DCMAKE_C_COMPILER=/usr/bin/gcc-9 \
        -DCMAKE_CXX_COMPILER=/usr/bin/g++-9 \
        -DCMAKE_BUILD_TYPE=Debug \
        -DCMAKE_CONFIGURATION_TYPES=Debug \
        -DBUILD_SHARED_LIBS=ON \
        -DBUILD_opencv_world=ON \
        -DBUILD_PERF_TESTS=OFF \
        -DBUILD_TESTS=OFF \
        -DCMAKE_INSTALL_PREFIX=../install_4.8.1/debug/ \
        -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
        ..
    make -j4
    make install
fi

rc=$?
if [[ ${rc} != 0 ]]; then
    echo "Error: please check: ${rc}"
	exit ${rc}
fi

      在windows上编译结果如下所示:

      在Linux上编译结果如下所示:

      GitHub:https://github.com/fengbingchun/OpenCV_Test

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1118191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SLAM进阶(九)---- cannot open shared object file问题

1 为什么会遇到这个问题 我们在 2 查看问题所在 我的项目依赖于VTK 7.1.1,PCL 1.9.1。项目可以完成编译,但是不能执行。即使用动态库编译链接stereo_inertial_tum_vi_old.cc后,得到名为stereo_inertial_tum_vi_old的可执行程序。但是在运行st…

哪些企业适合做私域?私欲怎么做成效大?

什么是私欲 简单直白来说,就是不用花钱就可以触达客户的渠道。私域流量就是私人的流量(不用花钱)。 哪些企业适合做私域? 》复购率高 比如美妆护肤产品行业、餐饮等快消品行业。 可通过群发推广消息、朋友圈营销和在社群里不断进…

Breach 1.0 靶机

Breach 1.0 环境配置 设置 VMware 上的仅主机模式网卡,勾选 DHCP 自动分配 IP,将子网改为 192.168.110.0/24 将靶机和 kali 连接到仅主机网卡 信息搜集 存活检测 详细扫描 后台网页扫描 网页信息搜集 Initech被入侵,董事会投票决定引入…

二、UI入门

1. QWidget类 QWidget类是Qt所有图形用户界面(组件)的基类,因此QWidget类内部规定了所有最基础的UI相关功能。例如以下成员: ● width : const int 宽度(单位:像素,后文同) Qt中的…

基于SegFormer的改进语义分割该网络

摘要 场景解析是无人驾驶领域的一个关键任务,但是传统的语义分割网络往往只关注于提取更深层次的图像语义信息而忽略了全局信息对图像分割任务的重要性。另外随着图像在深层次卷积网络中的传递,卷积核天然的滤波作用会使得图像的边缘趋于平滑而丢失细节特…

2015年408真题复盘

紫色标记是认为有一定的思维难度或重点总结 红色标记是这次刷真题做错的 记录自己对题目的一些想法与联系,可能并不太关注题目本身。 分数用时 选择部分10/21 78/8036min大题部分总分 摘自知乎老哥:“我做历年真题时,绝大部分是130~139&#…

LVS负载均衡集群 (NAT模式)

LVS集群 集群的概念: 为解决某个特定的问题,将多个计算机组合起来形成一个单个系统 集群的水平扩展: 增加设备,并行运行多个服务,通过网路连接和算法来调度服务分配的问题 集群的类型: 负载均衡集群&#…

【斗罗二】冰帝两次险些杀死雨浩,天梦哥求助伊老遭拒绝,霍云儿现身救儿子

Hello,小伙伴们,我是小郑继续为大家深度解析绝世唐门。 斗罗大陆动画第二部绝世唐门已经更新了,霍雨浩与冰帝完美融合,成功觉醒了第二武魂,霍挂的时代正式到来。只是在整个第19集中,官方做了大量的改编,不但…

有湖有仓,如何升级到湖仓一体

很多企业在过去的 IT 基础建设过程中,都已经搭建了数据仓库或数据湖,或者两者都有。其中数据仓库一般使用的是传统 Oracle 或者传统 MPP 数据库,如 Teradata 和 Greenplum,数据湖使用 Hadoop 大数据平台。所以在考虑湖仓一体升级改…

ps插件Coolorus for Mac中文激活版

Coolorus是一款非常实用的Photoshop插件,它为Photoshop增加了色环配色面板,让设计师可以更直观地选择颜色。同时,Coolorus还提供了多种专业配色方案,如鲜艳色、复古色、日常色等,设计师可以直接套用这些方案&#xff0…

Power BI 傻瓜入门 1. 数据分析术语:Power BI风格

本章内容包括: 了解Power BI可以处理的不同类型的数据了解您的商业智能工具选项熟悉Power BI术语 数据无处不在。从你醒来的那一刻到你睡觉的时候,某个系统会代表你收集数据。即使在你睡觉的时候,也会产生与你生活的某些方面相关的数据。如…

计算机网络的七层结构、五层结构和四层结构

为什么要分层: 这个就和我们平常写程序一样,高内聚、低耦合。将网络进行分层我们就可以根据每一层的功能分开开发设计,将复杂的网络问题分解为更简单和清晰的小问题,方便设计、实现和标准化。无需在意其他层是如何实现的&#xff…

【框架源码篇 04】Spring源码手写篇-Bean定义配置化

Spring源码手写篇-Bean定义配置化 一、Bean定义配置分析 我们前面实现了手写IoC和AOP的功能,但是我们在使用的时候发现我们的调用代码还是非常的繁琐,会给应用者很不好的体验。 上面的代码很直观的看到重复代码很多,要用户设置的内容也很多&…

基于springboot实现学生综合测评系统项目【项目源码+论文说明】

基于springboot实现学生综合测评系统演示 摘要 随着信息化时代的到来,管理系统都趋向于智能化、系统化,学生综合测评系统也不例外,但目前国内仍都使用人工管理,学校规模越来越大,同时信息量也越来越庞大,人…

运营商大数据精准营销,击碎你的固化营销思维

大数据精准营销服务是大数据应用的典型场景之一,也是依托大数据和互联网提升企业效率的一种有效手段。但是,在选择大数据服务的很多时候,企业往往要考虑法律与合规的问题,其中比较重要的是数据获取渠道与数据是否脱敏。在所有大数…

CSS 两栏布局

目录 CSS两栏布局(左列定宽,右列自适应宽) 方法一:浮动margin 方法二:定位margin 方法三:浮动BFC 方法四:Flex布局 方法五:able布局 CSS两栏布局(左列不定宽&#…

一、Qt简介

1. 什么是Qt? Qt是一个基于C的图形用户界面(GUI)开发框架,但图形用户界面并不是Qt的全部,因为Qt还包含了很多非图形化的开发功能:多线程、数据库、图像图形处理、音视频处理、网络通信、文件IO等。 一方面…

【智慧工地源码】基于AI视觉技术赋能智慧工地

伴随着技术的不断发展,信息化手段、移动技术、智能穿戴及工具在工程施工阶段的应用不断提升,智慧工地概念应运而生,庞大的建设规模催生着智慧工地的探索和研发。 建筑施工具有周期长、环境复杂、工序繁杂、人员流动性大等特点,所以…

10个基于.Net开发的Windows开源软件项目

分享10个适合程序员的神器,都是基于.Net开发的,可以用来学习,日常工作也可以使用。(点击标题,查看详情) 1、基于.NET的强大文件格式开源转换工具 一个基于.NET平台的开源文件格式转换工具,可以…

仿写el-upload组件,彻底搞懂文件上传

用了那么久的Upload组件,你知道是怎么实现的么,今天就来仿写一个饿了么el-upload vue组件,彻底搞懂前端的文件上传相关知识! 要实现的props 参数说明action必选参数,上传的地址headers设置上传的请求头部multiple是否…