关于 Windows 下使用 VSCode 搭建 OpenCV 环境的问题

您所在的位置:网站首页 opencv为什么编译会报那么多错 关于 Windows 下使用 VSCode 搭建 OpenCV 环境的问题

关于 Windows 下使用 VSCode 搭建 OpenCV 环境的问题

2024-07-15 01:50:47| 来源: 网络整理| 查看: 265

文章目录 引言1. 找不到 opencv2/opencv.hpp 头文件1.1 不使用 Code Runner 插件时1.2 使用 Code Runner 时 2. 直接点击编译成功的 .exe 文件报错

引言

使用 VSCode 搭建 OpenCV 环境大致的步骤如下:

下载 VSCode 和 MinGW,搭建基本的 C/C++ 运行环境下载并配置 CMake下载 OpenCV,使用 CMake 编译 OpenCV 源码在 VSCode 中配置 OpenCV,使得可以在 VSCode 中使用 OpenCV 相关的类库

以上步骤在该博文中已经进行了详细描述,本篇不在重复,本篇主要解释一下搭建的过程中额外遇到的一些问题。

1. 找不到 opencv2/opencv.hpp 头文件

如果按照上述文章配置完成之后,并且已经检查了环境变量等的配置信息确认无误,但是依然找不到头文件,有可能是因为使用了 VSCode 的 Code Runner 插件。在使用和不使用插件时配置是不一样的:

1.1 不使用 Code Runner 插件时

当 VSCode 不使用 Code Runner 插件时,cpp 文件的运行方式如下图所示:

在这里插入图片描述

此种方法的编译命令通过 tasks.json 和 launch.json 两个文件配置,配置样例如下:

// tasks.json { // https://code.visualstudio.com/docs/editor/tasks "version": "2.0.0", "tasks": [ { "label": "Build", // 任务的名字叫Build,注意是大小写区分的,等会在launch中调用这个名字 "type": "shell", // 任务执行的是shell命令,也可以是其他 "command": "g++", // 命令是g++ "args": [ "${file}", //当前文件名 // 扩展参数 // -I 头文件目录 // -L 库文件目录 // -l 库文件 "-I", "D:/opencv/build/include", "-I", "D:/opencv/build/include/opencv2", "-L", "D:/opencv/build/x64/MinGW/lib", "-l", "libopencv_core451", "-l", "libopencv_imgproc451", "-l", "libopencv_imgcodecs451", "-l", "libopencv_video451", "-l", "libopencv_ml451", "-l", "libopencv_highgui451", "-l", "libopencv_objdetect451", "-l", "libopencv_flann451", "-l", "libopencv_imgcodecs451", "-l", "libopencv_photo451", "-l", "libopencv_videoio451", "-o", //对象名,不进行编译优化 "${fileDirname}/${fileBasenameNoExtension}.exe", //当前文件名(去掉扩展名) ], // 所以以上部分,就是在shell中执行(假设文件名为filename.cpp) // g++ filename.cpp -o filename.exe "group": { "kind": "build", "isDefault": true // 任务分组,因为是tasks而不是task,意味着可以连着执行很多任务 // 在build组的任务们,可以通过在Command Palette(F1) 输入run build task来运行 // 当然,如果任务分组是test,你就可以用run test task来运行 }, "problemMatcher": [ "$gcc" // 使用gcc捕获错误 ], } ] }

其中 args 即编译命令参数,VSCode 会根据 args 中所指定的参数拼接出编译命令。上边的配置中通过 -I、-L、-l 指明了opencv 的头文件目录,库文件目录等信息。编译时会到指定的地方找。

// launch.json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", //这个应该是F1中出现的名字 "preLaunchTask": "Build", //在launch之前运行的任务名,这个名字一定要跟tasks.json中的任务名字大小写一致 "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}.exe", //需要运行的是当前打开文件的目录中,名字和当前文件相同,但扩展名为exe的程序 "args": [], "stopAtEntry": false, // 选为true则会在打开控制台后停滞,暂时不执行程序 "cwd": "${workspaceFolder}", // 当前工作路径:当前文件所在的工作空间 "environment": [], "externalConsole": false, // 是否使用外部控制台,选false的话,我的vscode会出现错误 "MIMode": "gdb", "miDebuggerPath": "D:/mingw64/bin/gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } 1.2 使用 Code Runner 时

当使用 Code Runner 插件时,cpp 程序直接点击右上角小三角运行:

在这里插入图片描述

此时代码的编译命令不是通过 tasks.json 文件中的配置来拼接,而是通过在 settings.json 文件中配置 code-runner.executorMap 实现。

// settings.json "code-runner.executorMap": { "javascript": "node", "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -I D:/opencv/build/include -I D:/opencv/build/include/opencv2 -L D:/opencv/build/x64/MinGW/bin -l libopencv_core451 -l libopencv_imgproc451 -l libopencv_imgcodecs451 -l libopencv_video451 -l libopencv_ml451 -l libopencv_highgui451 -l libopencv_objdetect451 -l libopencv_flann451 -l libopencv_imgcodecs451 -l libopencv_photo451 -l libopencv_videoio451 -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "php": "php", "python": "python -u", "perl": "perl", "perl6": "perl6", ... },

主要是 cpp 的配置,所指定的内容和 tasks.json 中指定的一样,即指明 -I、-L、-l。

2. 直接点击编译成功的 .exe 文件报错

报错信息如下:

在这里插入图片描述

这是因为程序在运行的过程中无法找到动态链接库(即之前 -l 所指定的那些 .dll 文件)造成的,将指定 .dll 文件所在目录添加到环境变量中即可。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭