利用Vcpkg编译c++环境Opencv X86静态库,解决本机opencv生成dll可以在其他计算机使用

本文讲述了如何在C#的Winform应用中解决因OpenCV动态库在不同电脑上无法调用的问题,通过CMake和Vcpkg工具将OpenCV编译为静态库,详细介绍了安装步骤和在VS2019中配置静态库的全过程。
摘要由CSDN通过智能技术生成

问题描述:

        c#的winform需要调用c++ 生成的opencv X86动态库dll,做图像预处理,但本机开发环境下可以正常用opencv功能,c#打包安装在其他电脑上会出现:找不到opencv相关dll的错误。
       在网上看到需要把opencv 编译成静态库,链接如下。

opencv的静态编译(暨本机opencv在c++环境生成dll,在其他计算机上无法调用问题)_opencv库生成dll 在其他电脑里无法使用-CSDN博客

 Cmake编译opencv X86静态库不成功:       

        opencv之后的版本只有x64版本,x86(win32)需要Cmake编译,折腾一天半不行。我的Opencv X86的动态库都是在网上下载的,奈何静态库网上找了半天没有。

        终于不负有心人,看到了Vcpkg 可以把opencv 编译成静态库, 接下来说教程。

开发环境:

        开发平台:win11

        软件        :vs2019

        语言        : c++、c#

        开发库     :Opencv X86

一、下载拉取 Vcpkg 代码

        推荐的下载位置:

     

  1.1 cmd终端拉取代码

        有可能比较大拉取不到,我没有拉取成功,所以我直接下载zip。

git clone https://github.com/microsoft/vcpkg

   1.2 网页直接下载代码

          Vcpkg网址,进去选中50Tags。

        点击zip下载到电脑上解压。

二、安装Vcpkg

        cmd进入下载或解压好的路径,终端输入      

bootstrap-vcpkg.bat

        这时候需要一些上网trick,要不会超时。

三、安装Opencv x86 静态编译库

        在安装opencv x86的时候需要配置以下Vs2019的环境,要不可能会报错“could not find any instance of Visual Studio”。

        报“could not find any instance of Visual Studio”错参考以下链接:

完美解决CMake时“could not find any instance of Visual Studio”的问题【每天一个小技巧】_could not find any instance of visual studio.-CSDN博客

        在此路径下继续输入以下代码进行opencv x86静态库编译安装:

vcpkg.exe install opencv:x86-windows-static

        当然要是安装x64的库:

vcpkg.exe install opencv:x86-windows-static

        或者查看opencv的库

vcpkg.exe search opencv

        里面只有三个版本的 opencv 2、3、4。

        例如安装opencv4,输入以下代码:

vcpkg.exe install opencv4:x86-windows-static

        在编译的时候可能耗费的时间挺久的。

        编译完成界面,现在opencv已经安装好了。

        在vcpkg目录下找到installed目录,我的是 C:\src\vcpkg\installed 目录下有一个 x86-windows-static文件夹,这就是opencv 静态库目录。

        C:\src\vcpkg\installed\x86-windows-static 文件夹包含oepncv 的 include和lib文件。

四、vs2019调用opencv x 86 静态库

        vs2019新建c++项目,属性页面配置选择Release,平台选择win32,配置属性 -> VC++目录 -> 包含目录和库目录。

        包含目录,C:\src\vcpkg\installed\x86-windows-static\include 和 C:\src\vcpkg\installed\x86-windows-static\include\opencv2

        库目录C:\src\vcpkg\installed\x86-windows-static\lib:

        属性页 链接接器->输入->附加依赖项 填C:\src\vcpkg\installed\x86-windows-static\lib 文件夹里所有后缀.lib文件名称:

        C:\src\vcpkg\installed\x86-windows-static\lib文件夹后缀.lib文件

我这里是:

flatbuffers.lib
jpeg.lib
libpng16.lib
libprotobuf.lib
libprotobuf-lite.lib
libprotoc.lib
libsharpyuv.lib
libwebp.lib
libwebpdecoder.lib
libwebpdemux.lib
libwebpmux.lib
lzma.lib
opencv_calib3d4.lib
opencv_core4.lib
opencv_dnn4.lib
opencv_features2d4.lib
opencv_flann4.lib
opencv_highgui4.lib
opencv_imgcodecs4.lib
opencv_imgproc4.lib
opencv_ml4.lib
opencv_objdetect4.lib
opencv_photo4.lib
opencv_stitching4.lib
opencv_video4.lib
opencv_videoio4.lib
quirc.lib
tiff.lib
turbojpeg.lib
zlib.lib

        填写进去

        最后设置一下:

        Opencv显示一张图片:

#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    cv::Mat imageMat = cv::imread("1.png");
    cv::imshow("figure1", imageMat);
    cv::waitKey(0);
    return 0;
}

        图片成功显示,配置成功。

五、总结和可下载编译好的opencv x86静态库

        亲测opencv x86静态库生成的dll,被c#调用然后安装在其他没有环境的电脑上可以使用。

        我知道肯定有人碰到各种原因没有编译成功,下面是编译好的opencv X86静态库,供大家免费下载~

https://download.csdn.net/download/weixin_43709347/89155134?spm=1001.2014.3001.5503

        

        之前下载别人opencv x86动态库,生成dll别的电脑不可以使用,静态库在网上苦寻无果,还好没有放弃。

        折腾了一天半时间,之前用cmake编译opencv x86从没成功过,真的好绝望,还好久违的笑容出现了!

        可能我孤陋寡闻,大家有其他opencv生成dll供其他无环境电脑使用可以评论或者私信我,谢谢了~      

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值