遇到的问题呢就是,以前在linux下写的opencv代码,现在需要在windows上结合目前的项目以脚本方式(.bat)运行,这是需要使用g++编译代码(本代码原先在vs2013上运行过),这个时候指定依赖关系的时候一直出问题(事先我的opencv是exe下载到本地的)。后来经过查询,需要对opencv进行源码编译,具体步骤如下所示:

MinGW-w64编译OpenCV-3.4.5:(一)MinGW-w64编译OpenCV-3.4.5 - 简书 (jianshu.com)https://www.jianshu.com/p/4e1f1edabfda

编译后生成的文件介绍:

  •  bin:可执行程序目录。
  • etc:一些配置文件目录。
  • include:OpenCV头文件目录。
    • x64:64位系统对应的OpenCV库。
    • x64子目录1mingw
  • mingw子目录1 bin:用于存放可执行程序和.dll动态链接库文件。
  • mingw子目录2 lib: .a文件,LINUX系统中的静态链接库文件。一些.cmake文件。

OpenCV的链接(MinGW-w64):

(二)OpenCV的链接(MinGW-w64) - 简书 (jianshu.com)https://www.jianshu.com/p/5933a8328805

OpenCV编译好的版本:

GitHub - huihut/OpenCV-MinGW-Build: 👀 MinGW 32bit and 64bit version of OpenCV compiled on Windows. Including OpenCV 3.3.1, 3.4.1, 3.4.1-x64, 3.4.5, 3.4.6, 3.4.7, 3.4.8-x64, 3.4.9, 4.0.0-alpha-x64, 4.0.0-rc-x64, 4.0.1-x64, 4.1.0, 4.1.0-x64, 4.1.1-x64, 4.5.0-with-contrib, 4.5.2-x64https://github.com/huihut/OpenCV-MinGW-Build

整好了这些,开始运用:

1、demo代码

#include <vector>
#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char **argv)
{
    Mat img = imread(argv[1]);
    imshow("llena", img);
    waitKey(0);
    return 0;
}

 2、编译GCC 参数详解 | 菜鸟教程 (runoob.com)https://www.runoob.com/w3cnote/gcc-parameter-detail.html

g++ -o demo images.cpp -I E:\software\opencv\opencv\build\install\include -L E:\software\opencv\opencv\build\install\x64\mingw\lib -lopencv_core348 -lopencv_highgui348 -lopencv_imgcodecs348 -lopencv_imgproc348

 3、运行

编译后运行时,出现问题,提示无法找到入口

解决办法:遇到这样的问题是因为在exe程序目录下,缺少所依赖的动态链接库。因此只要将所缺少的动态链接库添加到程序目录下即可。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐