如何在可执行文件中嵌入 openCV Dll

2023-11-30

我使用 openCV 编写了一个图像匹配工具(控制台应用程序,没有 GUI 或 Windows)。 我想将我的 EXE 文件移植到另一台计算机,但它需要 opencv dll(opencv_core220.dll、opencv_highgui220.dll,...)

我的问题是如何去做。我认为其中任何一个都有两个好处:

  1. 将 opencv 重新编译为静态库(.lib 而不是 .dll)。那不起作用。我收到 10 个有关 cap_vfw.obj 的链接器错误
  2. 如果可能,如何将 DLL 合并/嵌入到 exe 文件中。

我尝试使用ILMerge,但它不起作用(错误:无法从 .exe 文件加载程序集),因为它仅为 .Net 设计

附: - 我正在使用 Visual Studio 2005,在 Windows 上,C++ 编译器,openCV 2.2


我找到了答案。 必须打开原来的openCV工程,并以静态库模式重新编译所有相关部分。

  • 从以下时间开始为每个项目执行此操作libjasper并按字母顺序排列,直到opencv_video。也做同样的事情zlib project
  • 对于每个项目,转到项目属性\配置属性\常规\配置类型并将其设置为静态库
  • 现在重新编译这些项目。他们将创建许多大的 lib 文件(每个文件最多 10MB)。这些文件主要位于modulesopencv 的目录。在针对 dll 进行编译时,您必须找到它们并复制到保留常规 lib 文件的目录中。现在是一个棘手的部分
  • 与针对 dll 进行编译相比,您必须在代码中包含更多库
  • 这是一个示例,您的代码应如下所示。抱歉,它的格式不好。可能是这个页面的 html bug:
#include "cv.h"
#include "highgui.h"

    using namespace std;
    using namespace cv;

    // Directives to linker to include openCV lib files.

    #ifndef STATIC_LIBRARY_LINK
        // Linking against DLL. For each 'lib' file that appears below, final EXE will need a DLL.

    // Core of openCV
    #pragma comment(lib, "opencv_core220.lib") 
    #pragma comment(lib, "opencv_highgui220.lib") 
    #pragma comment(lib, "opencv_imgproc220.lib") 

    // Calibration and image matching
    #pragma comment(lib, "opencv_flann220.lib") 
    #pragma comment(lib, "opencv_features2d220.lib") 
    #pragma comment(lib, "opencv_calib3d220.lib") 

    // Other libs that might be needed
    /*#pragma comment(lib, "opencv_gpu220.lib") 
    #pragma comment(lib, "opencv_video220.lib") 
    #pragma comment(lib, "opencv_legacy220.lib") 

    #pragma comment(lib, "opencv_ml220.lib") 
    #pragma comment(lib, "opencv_objdetect220.lib") 
    #pragma comment(lib, "opencv_ffmpeg220.lib") 
    #pragma comment(lib, "opencv_contrib220.lib") */
#else

    // Static linking. No DLL's would be required but EXE file will be bigger 
    // and linking in debug mode might produce many warnings since *.pdb are not always 
    // present with the lib files

    // Core of openCV. Must be compiled as lib and not as dll's
    #pragma comment(lib, "opencv_core.lib") 
    #pragma comment(lib, "opencv_highgui.lib") 
    #pragma comment(lib, "opencv_imgproc.lib") 

    // Calibration and image matching. Must be compiled as lib and not as dll's
    #pragma comment(lib, "opencv_flann.lib") 
    #pragma comment(lib, "opencv_features2d.lib") 
    #pragma comment(lib, "opencv_calib3d.lib") 

    // Image I/O auxillary libraries. Must be compiled as lib and not as dll's
    #pragma comment(lib, "libtiff.lib") 
    #pragma comment(lib, "libpng.lib")
    #pragma comment(lib, "zlib.lib")
    #pragma comment(lib, "libjasper.lib")
    #pragma comment(lib, "libjpeg.lib")

    // OpenCV linear algebra methods. Must be compiled as lib and not as dll's
    #pragma comment(lib, "opencv_lapack.lib")

    // Auxillary libs, found in visual studio microsoft sdk
    #pragma comment(lib, "vfw32.lib")
    #pragma comment( lib, "comctl32.lib" )
    //#pragma comment(lib, "window_w32.lib")  // Not needed
#endif


    int main(void){
        // Your code here
        return 0;
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在可执行文件中嵌入 openCV Dll 的相关文章

  • 如何使用C从http下载文件?

    最近几天我试图弄清楚如何从 URL 下载文件 这是我对套接字的第一个挑战 我用它来了解协议 所以我想在没有 cURL 库的情况下只用 C 语言来完成它 我搜索了很多 现在我可以打印页面的源代码 但我认为这与文件不同 我不必只将接收到的数据从
  • 错误:表达式不可赋值三元运算符

    我有以下代码 MPLABX XC8 编译器给出此错误 错误 表达式不可分配 U1ERRIRbits RXFOIF uart1 oerr 1 uart1 oerr 0 这是相关代码部分 typedef union struct bool fe
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 如何使用T4从一个模板同时生成两个文件?

    我遇到的情况是 我需要生成两个 CSharp 代码文件 它们的代码几乎相同 但方法的输入和输出类型的命名空间不同 事实上 每个文件都针对特定国家 地区 并且类型来自特定国家 地区的 WSDL 我正在围绕服务编写一些包装器 逻辑完全相同 但从
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • C++中类成员函数相互调用有什么好处?

    我是 C 新手 我发现下面的编程风格对我来说很有趣 我在这里写了一个简化版本 include
  • CMake(Ninja 后端)使用 /MT 编译

    我有一个类似的问题CMake 使用 MT 而不是 MD 进行编译 https stackoverflow com questions 14172856 cmake compile with mt instead of md但有一些差异 我正
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • 自己绘制的WPF自定义滑块

    这是我关于堆栈溢出的第一个问题 所以不要踢它 我在尝试创建 Mac 风格的滑块控件时遇到问题 我已经发现这个解决方案 http www codeproject com KB miscctrl MAC Slider aspx我已经在我的解决方
  • 重载算术运算符

    赋值运算符可以声明为 T 运算符 const t 在类中 但不能以这种方式定义算术运算符 它必须是友元函数 我不明白为什么 你能解释一下吗 算术运算符不必须是友元 那么你可以这样定义 MyClass MyClass operator con
  • 从图像创建半透明光标

    是否可以从图像创建光标并使其半透明 我目前正在拍摄自定义图像并覆盖鼠标光标图像 如果我可以将其设为半透明 那就太好了 但不是必需的 销售人员喜欢闪亮的 目前正在做这样的事情 Image cursorImage customImage Get
  • 如何在 C++ 中正确使用 cin.fail()

    我正在编写一个程序 从用户那里获取整数输入cin gt gt iUserSel 如果用户输入一个字母 程序就会进入无限循环 我试图用下面的代码来阻止这种情况 但程序进入无限循环并打印出 错误 输入 我该如何修复我的程序 cin gt gt
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • fgets溢出后如何清除输入缓冲区?

    当输入字符串超出其预定义限制时 我遇到了 fgets 的小问题 以下面的例子为例 for index 0 index lt max index printf Enter the d string index 1 if fgets input
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 跟踪白色背景中的白球(Python/OpenCV)

    我在 Python 3 中使用 OpenCV 来检测白场上的白 黑球 并给出它的精确 x y 半径 和颜色 我使用函数 cv2 Canny 和 cv2 findContours 来找到它 但问题是 cv2 Canny 并不总是检测到圆的完整
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get
  • Adobe Illustrator 中的折线简化如何工作?

    我正在开发一个记录笔划的应用程序 您可以使用定点设备来绘制笔划 在上图中 我绘制了一个笔划 其中包含 453 个数据点 我的目标是大幅减少数据点的数量 同时仍然保持原始笔画的形状 对于那些感兴趣的人 上图笔画的坐标可以作为GitHub 上的

随机推荐

  • Javascript按名称删除嵌套对象属性[重复]

    这个问题在这里已经有答案了 我有一个复杂的 javascript 对象 其中包含多个嵌套数组和映射 我想删除具有给定名称的对象的每个字段 例如 myObj name John deleteMe 30 cars car1 Ford car2
  • Python:继续外循环中的下一次迭代

    我想知道是否有任何内置方法可以继续 python 外循环中的下一次迭代 例如 考虑以下代码 for ii in range 200 for jj in range 200 400 block0 if something continue b
  • 增加 WebView 中 WebSQL 配额的大小

    在普通的 Android Web 应用程序中 WebSQL 数据库的最大大小通常约为 8MB 在我正在制作的混合网络应用程序中 我想增加此限制 我该怎么做呢 看起来网络存储可能与它有关 但我能看到的唯一方法似乎是设置大小 setQuotaF
  • JavaScript 数独 - 检查规则

    我正在开发一个 javascript 数独 就输入验证而言 我很困惑 当每个值被输入到数独表中时 我有一个 onkeyup 触发一个函数 我试图使用该函数来确保没有值进入已经存在此类值的行 列 框 这是我第一次尝试这样的项目 所以我提前为菜
  • 通过 FTP 将 ANSI 字符串写入 Unicode 文件

    我有以下 Visual Basic 6 0 函数 它通过 FTP 将 ANSI 字符串写入新文件 我希望它将文件写入 UTF 16LE 在以下方法中有什么好的方法可以做到这一点吗 Public Sub writeToFile ByVal F
  • Pandas 缺少必需的依赖项 ['numpy']

    我目前正在学习机器学习的初学者介绍 输入命令时 import pandas as pd在终端的 python shell 中 我收到错误消息 导入错误 缺少必需的依赖项 numpy 我已经查看了其他类似的问题 尝试了该解决方案 但仍然收到相
  • 如何在 Angular2 中动态创建 SVG 组件?

    我正在创建一个使用 SVG 的 Web 应用程序 我创建了由 SVG 元素组成的组件 并将它们放入根目录中svg元素 它们有属性选择器 因为 SVG XML 文档树很严格 所以我不能使用元素选择器 他们有一个以以下开头的模板svg g ta
  • 更改购物车小部件 Woocommerce 中的“查看购物车”和“结帐”按钮文本

    我试图找到正确的功能或过滤器来编辑 Woocommerce 购物车小部件中 查看购物车 和 结账 按钮的文本 我的网站网址 http modularwave com 只是为了让你知道我正在使用来自 zigzagpress 的 Brutal
  • 将 Elasticsearch kibana 查询字符串格式转换为 URI 搜索格式

    从上周开始 我开始使用 AWS 上的 Elastic Search Service 我当前的 Elasticseach 版本是 6 X X 和 Kibana 6 X X 现在我对在 Kibana 客户端上运行的查询格式有点灵活 但我的问题是
  • 我可以将图像转换为点网格吗?

    只是一个简单的问题 可以这样吗 在 iOS 设备上完成图像处理 如果是 怎么办 是的 尽管 Core Graphics 可能不是对图像进行此类过滤的最佳方式 我的建议是使用 OpenGL ES 2 0 片段着色器 事实上 我只是写了一个来做
  • 关于静态变量的访问问题[重复]

    这个问题在这里已经有答案了 我在某些头文件 Class1 hpp 中有一个类 Class1 class Class1 static std vector
  • 使用正则表达式替换文件

    我尝试替换月份标签的内部文本 即月份名称应替换为其指定的月份编号 我试过这个 Dim strFile As String File ReadAllText TextBox1 Text parentFolder xml strFile Reg
  • Heroku 上的 OpenSSL::SSL::SSLError [重复]

    这个问题在这里已经有答案了 我正在尝试通过 Facebook 或 Twitter 对用户进行身份验证 让他们填写信息 然后单击 保存 从而创建用户记录 单击 保存 后 我在最后一步中收到 OpenSSL 错误 这发生在 Devise Reg
  • JSON无法反序列化为对象,需要数组吗?

    我正在尝试获取传入的 JSON 项目并将它们绑定到列表框项目 但 Visual Studio 告诉我我需要执行数组而不是对象 我从来没有这样做过 有人知道怎么做吗 我的根对象 public class RootObject public s
  • 获取列表中元组的计数,无论元素顺序如何

    我有一个元组列表 看起来像这样 my list 1 12 12 1 12 1 20 15 7 8 15 20 我想计算数字组合的数量 无论顺序如何 例如 如果只是打印它 我希望输出为 1 12 3 20 15 2 7 8 1 基本上 我有一
  • 升级到 Android Gradle 插件 3.4.0 后类不再混淆

    升级到 Android Gradle 插件 3 4 0 后 基本类不再被混淆 以下基本步骤可以重现该问题 在 Android Studio 中创建一个新的空项目 In app build gradle change minifyEnable
  • Pandas:过滤计数小于指定值的数据透视表行

    我有一个 pandas 数据透视表 看起来有点像这样 C bar foo A B one A 1 154627 0 243234 three A 1 327977 0 243234 B 1 327977 0 079051 C 0 83250
  • Android - 通过 facebook 分享自定义链接

    当用户打开应用程序时 我需要共享应用程序中的特定部分 如果他下载我的应用程序 它会直接导航到该部分 可能是嵌套片段 String AppURL https play google com store apps details id getA
  • HTML/DOM:document.body.scrollHeight 的标准等效项是什么?

    近十年来我一直在使用 document body scrollHeight 返回 ideal 浏览器窗口的高度 当我forcingInternet Explorer 进入怪癖模式 通过使用怪异模式文档类型 现在我想选择加入标准模式 除了的含
  • 如何在可执行文件中嵌入 openCV Dll

    我使用 openCV 编写了一个图像匹配工具 控制台应用程序 没有 GUI 或 Windows 我想将我的 EXE 文件移植到另一台计算机 但它需要 opencv dll opencv core220 dll opencv highgui2