win10 opencv4nodejs 安装 踩坑实况

官方教程: https://www.npmjs.com/package...

!!!以下操作均在powershell(管理员模式)中完成!!!

1. 安装cmake(请自行安装并且完成环境配置)

powerhsell下输入:

cmake --version

出现如下提示则安装成功

cmake version 3.21.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).

2. 安装git(请自行安装并完成环境配置)

powerhsell下输入:

git --version

出现如下提示则安装成功

git version 2.31.1.windows.1

3. windows build tools

npm install --global --production windows-build-tools

不管你有没有visual studio 2017/2019(不是带CODE的那个), 都可以安装这个build tools
这个也有相关的坑, 请查看
https://blog.csdn.net/weixin_...

4. 安装opencv4nodejs(巨坑)

千万不要使用自动安装脚本, 一定要手动安装

3.1 设置手动安装

# on windows:
set OPENCV4NODEJS_DISABLE_AUTOBUILD=1

3.2 检查chocolatey版本, 如果没有安装则自行安装

choco --version

出现这行绿字就是成功了

Chocolatey v0.10.15

3.3 安装opencv

# to install OpenCV 4.1.0
choco install OpenCV -y -version 4.1.0

这个opencv不是opencv4nodejs, 但是后面有大用
记住它的安装路径, 我的是在'C:\tools\opencv'
win10 opencv4nodejs 安装 踩坑实况_第1张图片

3.4 为opencv添加环境变量

在刚刚安装的opencv路径下, 有一个build文件夹, 里面包含着我们需要的所有东西
win10 opencv4nodejs 安装 踩坑实况_第2张图片

OPENCV_DIR
C:\tools\opencv\build

OPENCV_INCLUDE_DIR
C:\tools\opencv\build\include

OPENCV_BIN_DIR
C:\tools\opencv\build\x64\vc15\bin

OPENCV_LIB_DIR
C:\tools\opencv\build\x64\vc15\lib

x64是64位
vc15是visual studio 2017, 代表我使用的是2017版本的visual studio.
请确保这四个环境变量没有错误, 这很重要

3.5 npm init

npm init

win10 opencv4nodejs 安装 踩坑实况_第3张图片
这将会在当前目录下创建一个package.json文件, 建议切换到自己喜欢的目录, 不要在C:\Windows\system32目录下进行(这是powerhsell默认的目录)

3.6 打开刚刚创建好的package.json文件

一开始它长这个样子:
win10 opencv4nodejs 安装 踩坑实况_第4张图片
但是我们要修改它, 全部删除, 然后替换成opencv官方要求的样子:

{
  "name": "my-project",
  "version": "0.0.0",
  "dependencies": {
    "opencv4nodejs": "^X.X.X"
  },
  "opencv4nodejs": {
    "disableAutoBuild": 1,
    "opencvIncludeDir": "C:\\tools\\opencv\\build\\include",
    "opencvLibDir": "C:\\tools\\opencv\\build\\x64\\vc14\\lib",
    "opencvBinDir": "C:\\tools\\opencv\\build\\x64\\vc14\\bin"
  }
}

注意:此处json文件用的是vc14的visual studio 2015, 如果你用的vc15,也就是visual studio 2017, 请自行更改!!!

3.7 最后的安装!

npm install -g opencv4nodejs

此处'-g'代表global, 意为:windows系统下任何用户均可使用此软件, 即opencv4nodejs
同时, 环境变量中的系统变量将会被应用。

OVER

报错一览:

1. 没有完成初始化

ENOENT: no such file or directory, open 'C:\Windows\system32\package.json'

解决方案:
请查看步骤3.5, 3.6, 完成npm的初始化, 以及修改package.json文件

2. visual studio 相关问题

opencv有且仅有使用visual studio 2015, 2017进行build的版本, 即上文中提到的vc14, vc15。
!!!没有visual studio 2019!!!

解决方案: 请自行设置 msvs_version

npm config set msvs_version 2017

3. 文件缺失

网上有很多相关的问题, 但我没有遇到, 所以无法提供解决方案

4. windows-build-tools安装卡住了!

Successfully installed Python 2.7

请前往这个链接, 感谢这位大佬的解决方案:
https://blog.csdn.net/weixin_...

大概就是:
1.把windows-build-tools自动下载的C:\user\{用户名}\.windows-build-tools\python2.7加入环境变量
2.下载.net framework的最新版本(我用的4.7.2)
3.修改C:\user\{用户名}\.windows-build-tools\build-tools-log.txt文件, 最后一行添加
Variable: IsInstalled = 1, 骗这个程序说已经安装完了, 然后程序就会以为安装完了, 就不会报错了.

5. package.json没有配置

Error: spawn C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\15.0\Bin\MSBuild.exe ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:81:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:81:21) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'spawn C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe',
  path: 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\15.0\\Bin\\MSBuild.exe',
  spawnargs: [ './OpenCV.sln', '/p:Configuration=Release', '/p:Platform=x64' ]

Github Issue:https://github.com/justadudew...

解决方案:
由于没有正确配置package.json, 所以不能进行MSBuild.exe
正如我说过的, opencv4nodejs 不支持 visual studio 2019, 所以请进行上文中3.6的操作, 手动配置package.json 并且保证visual studio版本在2015或者2017.

你可能感兴趣的:(node.jsopencv)