环境配置:Win10 - VSCode - MinGW64 - OpenCV 4.5.0 - ZBar 0.23.92

  • 前言
  • 1. VSCode
    • 下载VSCode
    • 安装 C/C++ 插件
    • 项目配置
  • 2. MinGW
    • 选择MinGW的原因
    • MinGW下载
    • 开始安装
      • 安装MinGW
      • 配置环境变量
    • 安装后测试
    • 代码测试
  • 3. OpenCV
    • 安装CMake
    • OpenCV下载
    • 使用CMake编译OpenCV
    • 配置环境变量
    • 安装后测试
  • 4. ZBar
    • 下载ZBar
    • 编译ZBar
    • 安装后测试
  • 附注

前言

在开始环境配置前,请充分理解以下内容,减少配置中走回头路的概率。

  • 配置环境是整个开发过程中最容易踩坑,体验最差的一个阶段,但是一旦走过这个阶段,后面就是一片坦途。所以请放平心态,耐下心来,一步一个脚印走完。
  • 由于Windows和Linux系统的底层架构不同,Linux上编译的文件在Windows上不能使用,需要重新编译。
  • MinGW和Visual Studio的配置方式是两条不同的路线,由于底层使用的GNU编译套件不同,两种方式所编译出的库不能通用。
  • 在配置时,首先应配置好MinGW,然后再在其基础上生成OpenCV和Zbar的库文件。最后可以在VSCode上进行验证,但VSCode不是唯一选择。
  • 每完成一个任务,配置环境变量后,都建议重启一次电脑。
  • 测试每一项安装是否成功,通过VSCode编译、连接后,要将所需的dll放在可执行程序exe的目录下。

1. VSCode

下载VSCode

https://code.visualstudio.com/

安装 C/C++ 插件

在VSCode中搜索C/C++,安装即可(C++ Intellisense 可选)。

项目配置

通过新建并配置三个json文件,就可以通过VSCode调试程序了。

  • launch.json
{    "version": "0.2.0","configurations": [{"name": "g++.exe - 生成和调试活动文件","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\env\\mingw64\\bin\\gdb.exe",        //自行修改"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe 生成活动文件"}]
}
  • c_cpp_properties.json(这里预先配置了OpenCV和ZBar,环境配置完后用来测试)
{"configurations": [{"name": "win","includePath": ["${workspaceFolder}/**","C:\\env\\opencv-4.5.0\\build\\install\\include", "C:\\env\\opencv-4.5.0\\build\\install\\include\\opencv2","C:\\env\\zbar-0.23.92\\include"],"defines": [],"compilerPath": "C:\\env\\mingw64\\bin\\gcc.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4
}
  • tasks.json(路径内容自行修改)
{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe 生成活动文件","command": "C:\\env\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always","-g","${fileDirname}\\*.cpp","-o","${fileDirname}\\${fileBasenameNoExtension}.exe","-I", "C:\\env\\opencv-4.5.0\\build\\install\\include","-I", "C:\\env\\opencv-4.5.0\\build\\install\\include\\opencv2",            "-L", "C:\\env\\opencv-4.5.0\\build\\install\\x64\\mingw\\lib","-l", "opencv_core450","-l", "opencv_imgproc450","-l", "opencv_imgcodecs450","-l", "opencv_video450","-l", "opencv_ml450","-l", "opencv_highgui450","-l", "opencv_objdetect450","-l", "opencv_flann450","-l", "opencv_imgcodecs450","-l", "opencv_photo450","-l", "opencv_videoio450","-I", "C:\\env\\zbar-0.23.92\\include","-I", "C:\\env\\zbar-0.23.92\\include\\zbar","-L", "C:\\env\\zbar-0.23.92\\zbar\\.libs","-l", "zbar"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

2. MinGW

选择MinGW的原因

很显然,MinGW比起动辄几十个G的Visual Studio轻便太多了。

MinGW下载

通过这个链接下载获取MinGW的安装包文件。
http://sourceforge.net/projects/mingw/files/latest/download

开始安装

安装MinGW

在Settings页面,依次选择

  • Version: 8.1.0
  • Architecture: x86_64
  • Threads: posix
  • Exception: seh
  • Build revision: 0

这里需要注意的是线程Threads的选择,如果要使用std::threads,另一个选项win32是不支持的,则选择安装posix。

配置环境变量

安装后,在系统环境变量中添加安装好的MinGW的bin文件位置,如:
C:\env\mingw64\bin

安装后测试

打开命令行,这里建议先安装一个Git,然后使用git bash打开。直接使用cmd打开也可以。

gcc -V

如果出现相关信息,则说明安装成功,我的部分显示结果如下:

Thread model: posix
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)

代码测试

#include <iostream>using namespace std;int main()
{cout << "Hello World!" << endl;system("pause");return 0;
}

3. OpenCV

这里通过源码的方式编译出我们能够使用的OpenCV库,首先需要安装cmake。

安装CMake

下载地址:https://cmake.org/download/
选择适配的版本,下载后开始安装。安装也很简单,一路按照默认配置安装就行。安装后,也将其添加到系统环境变量中,如:
C:\env\CMake\bin

OpenCV下载

  • opencv下载:https://opencv.org/releases.html
    在这里选择Sources下载源码。
  • opencv_contrib下载:https://github.com/opencv/opencv_contrib/tags
    opencv_contrib的版本要与上面的版本一致。

使用CMake编译OpenCV

运行cmake-gui,源码位置选择OpenCV的下载位置,编译位置选择在OpenCV同路径下新建的build文件夹。
点击Configure,生成器选择MinGW Makefiles,“Use default native compilers”,点击Finish。

等待片刻,当显示Configuring done就表明源码配置完成。
选择OPENCV_EXTRA_MODULES_PATH一项,添加你刚刚解压的opencv_contrib中的modules目录,还要把OPENCV_ENABLE_NONFREE选上。
然后再点击Configure,完成后点击Generate,之后会提示generating done,说明cmake编译成功了。

然后进入刚才编译路径下(/build),开始安装。
输入mingw32-make install
等待一段时间后,OpenCV就安装好了。

如果install opencv时出现vs_version.rc.obj无法生成的错误,可以返回前面cmake的步骤,添加一行OPENCV_VS_VERSIONINFO_SKIP = 1的选项,重新编译即可通过。

配置环境变量

完成后,配置环境变量,如:
C:\env\opencv-4.5.0\build\install\bin

安装后测试

这里通过一段测试程序来检测环境配置。代码如下:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>using namespace cv;
using namespace std;int main()
{Mat img=imread("img.png");cv::imshow("image",img);imwrite("./img.png", img);cv::waitKey();return 0;
}

图片路径自行修改。

4. ZBar

与目前能找到大多数使用0.10版本的教程不同,我使用的是0.23版本。0.10版本后,ZBar原作者就将其交予其他开发者进行开发和维护,现在的新版ZBar要更加优秀,且更易于配置,已经没有继续使用0.10的理由。

下载ZBar

选择最新版本下载:https://github.com/mchehab/zbar

编译ZBar

编译借鉴了Github上的一个issue,https://github.com/mchehab/zbar/issues/144
首先要安装MSYS2,下载链接是:https://www.msys2.org/

接着进入MSYS2 MinGW 64-bit,执行以下命令

pacman -S mingw-w64-x86_64-toolchain
cd zbar
autoreconf -vfi
./configure  --host=x86_64-w64-mingw32 --without-java --without-gtk --without-qt  --without-imagemagick  --disable-video --without-python
make
make install

完成后,不需要配置环境变量,只要编译出的动态链接库即可。

安装后测试

#include <iostream>
#include <zbar.h>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>#define STR(s) #susing namespace std;
using namespace cv;
using namespace zbar;int main()
{// create a readerImageScanner scanner;// configure the readerscanner.set_config(ZBAR_NONE, ZBAR_CFG_ENABLE, 1);// obtain image dataMat img = imread("barcode.png");Mat imageGray;cvtColor(img, imageGray, COLOR_RGB2GRAY);int width = imageGray.cols;int height = imageGray.rows;uchar *raw = (uchar *)imageGray.data;// wrap image dataImage image(width, height, "Y800", raw, width * height);// scan the image for barcodesint n = scanner.scan(image);// extract resultsfor(Image::SymbolIterator symbol = image.symbol_begin();symbol != image.symbol_end();++symbol) {// do something useful with resultscout << "decoded " << symbol->get_type_name()<< " symbol \"" << symbol->get_data() << '"' << endl;}// clean upimage.set_data(NULL, 0);system("pause");return 0;
}

图片路径自行修改。

附注

由于各人设备环境差异,配置中可能遇到各种各样的坑。踩坑后建议去国外技术论坛找寻答案。

环境配置:Win10 - VSCode - MinGW64 - OpenCV 4.5.0 - ZBar 0.23.92相关推荐

  1. Win10+VSCode搭建opencv+C++环境(2)

    Win10+VSCode搭建opencv+C++环境(1) 前面都OK之后,还要记得添加opencv的环境变量,不然的话,后面会提示找不到libopencv_highgui348.dll等一系列dll ...

  2. Win10+VSCode搭建opencv+C++环境(1)

    <===Win10+VSCode搭建opencv+C++环境(2) 参考链接 https://blog.csdn.net/qq_37120369/article/details/10390610 ...

  3. 【SLAM】SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+Vcpkg

    目录 SLAM环境配置 Win10+VS2019+OpenCV+PCL+g2o+vcpkg 软件及版本 1. Windows 10 2. Visual Studio 2019 3. OpenCV 4. ...

  4. GAMES101课程环境搭建(Win10+VSCode)

    GAMES101课程环境搭建(Win10+VSCode) 抄自:知乎 发现很多人遇到Mingw环境的问题,这里共享一个可用的mingw,自行解压,然后把bin目录加入环境变量即可. 链接: https ...

  5. 最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

    最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019) 本篇博客根据NVIDIA 官方文档所述, 并根据自己实践得出. 供各位需要的朋友参考. 1.前言 本篇文章的软件环境为: ...

  6. maven环境配置 win10,配置阿里云私服和默认仓库地址

    maven环境配置 win10 前提 具体步骤 其它问题 前提 JDK环境已经配置,检查 具体步骤 1.下载maven: https://maven.apache.org/download.cgi 2 ...

  7. 深度学习环境配置Win10+CUDA+cuDNN+Tensorflow2.0+PyTorch1.2+Python3.7.6

    系统环境:Win10 Python版本:3.7.6 CUDA版本:10.0 cuDNN版本:7.6.5 Tensorflow-gpu版本:2.0.1 PyTorch版本:1.2.0 深度学习环境配置W ...

  8. 一篇就够用了——深度学习Ubuntu16.04环境配置+Win10双系统

    一篇就够用了深度学习Ubuntu16.04环境配置 必看!此教程使用说明 [必备配置]基本环境配置 1.win10+ubuntu16.04双系统安装 2.ubuntu最重要的事--切换下载源 3.ub ...

  9. Java1.8安装win10_java1.8环境配置+win10系统

    Java环境配置相关 Java jdk 1.8版本的环境配置和1.7版本 存在一些差异,当然不同的操作系统可能会对jdk配置有一定的变化.本文我主要说1.8版本的jdk在window10 系统上的配置 ...

最新文章

  1. 嵌入式开发笔记-存储控制器
  2. #tomcat#生成的jsp转换问题
  3. 基于pygame的射击小游戏制作(二)射击子弹
  4. 【小工匠聊Modbus】05-数据类型
  5. 这些被同事喷的JS代码风格你写过多少?
  6. mybatisplus 操作另一个数据库的数据_MySQL数据库的基础操作
  7. NB-IoT将成为未来5G物联网主流技术
  8. ldo和dcdc功耗_深度解析DCDC和LDO各自的原理和区别
  9. QLabel 图片大小设定
  10. SAP License:WBS结果分析
  11. Java 反射 —— 运行时的类型信息
  12. 【转载】MyBatis+MySQL 返回插入的主键ID
  13. Code Snippets for Windows Mobile 5 in C#
  14. 线性支持向量分类机及其实现
  15. Paraview快捷键操作
  16. MC 2017数控车床编程基础到精通详细视频教程
  17. 技术笔试面试题(上)
  18. javac: 无效的标记
  19. ccf201503-1 ccf 图像旋转-内存限制问题
  20. 【UEFI实战】UEFI中使用汇编代码

热门文章

  1. 浪潮盒子IPBS9505-多遥控版-S905L/M2芯片-安卓4.4.2-线刷固件包
  2. 网络流量异常检测综述
  3. eagle php,Eagle个人博客系统
  4. 天猫无线内容运营总监教你如何做好内容营销
  5. 娃娃鸭Delphi面向对象编程思想刘艺笔记
  6. Python学习之封装、继承、多态详解
  7. 爱情有多美(曾贤志)
  8. 南京大学计算机系本科生开放日,2018/7
  9. Aigtek功率放大器在使用过程中应该如何进行阻抗匹配
  10. 打开门,推开希望之窗