opencv cmake编译 && nodejs

1.cmake编辑opencv的源代码路径(带有makelist的目录),生成opencv相关lib文件.configure两次后,点击生成(cmake中选择安装的以依赖库,如果缺少相应的依赖库,就算成功生成了的OpenCV功能也会有问题的,建议的NuGet下载

       configure失败,可以看看上面的参数,手动修改参数后继续configure

       generate失败,可以修改*.cmake文件重新编译

       cmakelist.txt文件中url包含(根据findpackage指定的/module/cmake文件下载对应的版本),外部文件的地址

  opencv cmake编译 && nodejs_第1张图片

    编译x64版本

opencv cmake编译 && nodejs_第2张图片

2.添加opencv包括目录到项目进行vc开发,如果要在nodejs中使用opencv,在编译构建完项目后出现如图项目:

opencv cmake编译 && nodejs_第3张图片

编译运行vc10,生成bin文件夹和lib文件。不过nodejs中使用的目录结构是opencv bin安装包的目录结构,所以通过cmake编译出来的vc项目默认是有调和发布目录的,需要根据nodejs opencv源码readme.md中的描述,设置相应的环境变量和目录结构,nodejs opencv使用了bin和lib目录,node-gyp编译的js源码中可以看到相应的环境变量和目录结构检测代码。

3.node-gyp编译opencv过程中,出现如下WindowsSDKDir不存在错误,需要下载windows kit 8.1版本解决,并且路径环境变量中添加cl路径,保证cl能单独运行(鼠标双击无错误提示,可能需要在VS \\ common7 \ IDE目录下拷贝mspdb100.dll,mspdbcore.dll,mspdbsrv.exe文件),重启nodejs控制台。

opencv cmake编译 && nodejs_第4张图片

     如果出现STDDEF.H找不到,说明VC环境变量未添加,需要运行VC环境下的vcvarsall.bat,在使用NPM安装

     如果node-gyp目录中的build.js错误,需要配置环境变量GYP_MSVS_VERSION = 2010 或者当前vs版本

如果以上配置还不行,单独测试node-gyp configure build C ++ demo,如下地址:

http://www.cnblogs.com/yupeng/p/3469444.html

http://wiki.jikexueyuan.com/project/nodejs/addons.html

https://github.com/nodejs/node-addon-examples

node-gyp configure显示编译C ++的配置node- gyp 最终生成* .node 二进制文件,供nodejs调用

npm init为项目创建package.json(项目依赖配置

最终在窗户上还是编译错误:

opencv cmake编译 && nodejs_第5张图片

在C盘全局节点配置中node-gyp中查到,node- gyp 使用的3.6.1的版本中的v8.h和node.h使用的VS2015或者更高的版本,而我用的VS2010,只支持C ++ 11标准,对于C ++ 14和17都不支持,CL编译起有差别导致编译错误解决办法:下载的NodeJS开源代码的老本本支持VS2010的,节点-GYP构建vcproject后,手动添加的NodeJS包括生成节点文件。

安装纯净版的nodejs:http://www.cnblogs.com/SCOOL/p/4054045.html(下载npm源码:node cli.js install npm -gf手动安装npm

 

4.nodejs下的opencv(windows下需要先单独安装opencv (nodejs调用vc opencv库),cmake和使用tbb第三方框架编译,有的opencv需要单独下载tbb)

      nodejs参考:http://www.runoob.com/nodejs/nodejs-npm.html

      npm安装查询数据库工具   

      npm config | npm config ls查看配置npm config set key value

      npm ls查看目录结构npm list -g查看安装的包npm list模块名

      NPM-GYP源码编译的C ++扩展(蟒还有GYP和scons的构建项目)

                       node-gyp configure错误:http//blog.csdn.net/lengyoumo/article/details/72235131

 

      npm update更新当前项目或着指定模块

      npm init在当前生成pakage.json文件

      npm-pre-gyp二进制包C ++扩展

      npm-install -g grunt-node-inspector简单配置

      npm-install --production安装错误报告(json> =改成〜)

      npm install -d(--save-dev) -s(--save)

      nodejs-opencv需要安装c ++版本的opecv在目录build下配置环境变量OPENCV_DIR并添加路径路径%OPENCV_DIR \ bin%

      nodejs淘宝镜像安装:( - g全局安装(node_module下的npm目录npmrc配置前缀和缓存),否则本地安装,下载文件到cmd启动目录)

        node_module中大部分源码都有typescript定义

        nodejs项目和网页js不同,nodejs不包含navigator等对象

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

         项目依赖安装:npm install(安装到本地-g安装到nodejs目录下代码中要求只能查找到npm install的模块)

         项目运行:node index.js运行js程

         项目调试: node inspect  index.js调试

5.常用的npm模块有(npm是nodejs包管理器,npm独立网站)

         npm可以方便的发布自己的模块,使用开源的模块,由于模块众多,vscode开发的使用的时候install后,可以方便的查看module源码,了解其功能。

模块名 作者 简介
async caolan 异步操作管理
bl rvagg 二进制数据解析
bluebird petkaantonov 异步操作管理
browserify substack 发布浏览器可用的包
bunyan trentm 日志(logging)管理
chai jakeluer 断言
chalk sindresorhus 命令行彩色输出
co tjholowaychuk 异步流程管理
colors marak 命令行彩色输出
commander tjholowaychuk 命令行工具
debug tjholowaychuk Debug输出器
dockerode apocas Docker管理
duplexify mafintosh Stream流操作工具
event-stream dominictarr Stream流操作工具
express tjholowaychuk Server服务器框架
glob isaacs 文件名匹配
grunt cowboy 构建工具
gulp contra 构建工具
hapi hueniverse Server服务器框架
hyperquest substack 轻量级HTTP客户端
istanbul gotwarlost 测试用例覆盖率分析
JSONStream dominictarr Stream流管理工具
koa tjholowaychuk Server服务器框架
levelup rvagg LevelDB
lodash jdalton 函数式编程工具
log4js nomiddlename 日志(logging)管理工具
minimatch isaacs 文件名匹配
minimist substack 命令行操作
mocha tjholowaychuk 单元测试
moment timrwood 日期时间输出
mongodb christkv MongoDB
mysql felixge MySQL
nconf indexzero 配置工具
needle tomas 轻量级HTTP客户端
node-fetch bitinn Fetch API
nodemailer andris9 Email客户端
passport jaredhanson 登录和认证
pg brianc Postgres
pump mafintosh Stream流管理工具
redis mjr Redis
request mikeal HTTP客户端
restify mcavage REST API搭建
socket.io rauchg WebSocket实时通信
split2 matteo.collina Stream流管理工具
tape substack 单元测试
through2 rvagg Stream流管理工具
underscore jashkenas 函数式编程工具
ws einaros Websockets
xml2js leonidas XML转换为JavaScript

你可能感兴趣的:(opencv cmake编译 && nodejs)