博主之前写过一篇文章《html5与EmguCV前后端实现——人脸识别篇》,叙述的是opencv和C#的故事。最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块,便欲部署之。然而opencv的部署似乎从来都不会那么顺利......
找模块上https://www.npmjs.com/ (在大天朝请自行加点*技能!)搜索opencv,一眼就知道该用peter桑的模块了...
然后点进去,似乎也很美好!
然而,你要是windows的操作系统,你试试吧。
$ npm install opencv
我在寻找解决方案的时候,发现了模块作者的一个留言。。。
大致是说,作者写这个模块的时候就没考虑windows,然后如果有同学能成功跑起来,那么他很乐意添加一些兼容windows的东西。。。。。。
万幸的是,还是有很多机智的小伙伴的去帮助Peter大大的。那么吐槽结束,开始部署环境。
1) 首先,请确认你的node.js版本能跑peter大大的模块(可以去github查,或者直接装个最新的)
2) 安装正确版本的opencv,并且配置opencv环境变量。nodejs的opencv模块目前支持的是2.4.9版本的opencv。要是你看到这篇文章是很久以后,可以去github上通过.pc文件确认opencv的版本。
3) 部署pkg-config
1. 下载解压下图三个文件,到这里可以下载。在对应win64/win86文件夹里的dependencies下面找。(如果被墙了,同学们就自己百度这些文件吧,pkg-config的安装能百度到)
2.配置环境变量,分别把三个文件夹的bin文件夹加入环境变量就好了
3.为.pc文件配置环境变量。新建一个PKG_CONFIG_PATH的环境变量指向.pc文件所在文件夹。这里的.pc文件就是前面说到过的,nodejs-opencv模块里面有,稍作修改就能用了,x86/x64只要一个文件就好了。
4)然后需要安装node gyp模块 这步很重要也很麻烦- -。。。你其实还是需要装python和visual studio......
1. 安装python2.7.3 (和opencv一样,装最新的3.0就玩不起来了),配置python环境变量。
2. 安装visual studio 2013 (express就可以了),安装过程比较慢。
3. win7 64位系统要装个补丁,以上在gyp的github上面有说明,还是蛮详细的。
4. npm install -g node-gyp
5)从github下载nodejs-opencv整个文件夹。
6)nodejs 命令
npm install
7) npm install opencv 还是不行的- -,好像还是只能编译github的上作者的文件,要是哪位大神知道解决方案,请留言,谢谢啦。
npm install 之后其实就可以用啦,人脸识别的什么都不是问题。这里其实就是利用了nodejs可以调用c/c++文件的特性,只是在windows上编译还是有些小复杂。
博主小站 http://jsonic.net/
转发请注明出处:http://www.cnblogs.com/Arthus/p/4791237.html
随机推荐
-
javascript运算符——关系运算符
× 目录 [1]恒等 [2]相等 [3]大于[4]小于 前面的话 关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或false,关系表达式总是返回一个布尔值,通常在if.while或 ...
-
CSS3盒模型display:box详解
display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分. 目前box ...
-
adb_亮屏
来自:http://justonlypiano.blogspot.tw/2013/08/adbandroidandroid-phone-screen-off-via.html 更多内容请查看:http ...
-
Helpers\Password
Helpers\Password The password class uses php 5 password_ functions. To create a hash of a password, ...
-
【Java】使用Runtime执行其他程序
public class ExecDemo{ public static void main(String[] args) { Runtime r = Runtime.getRuntime(); Pr ...
-
ActiveMQ持久化消息的三种方式
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt362 本文只介绍三种方式,分别是持久化为文件,MYSql,Oracle.下面 ...
-
np.array.all()和np.array.any()函数
np.array.all()是对np.array中所有元素进行与操作,然后结果返回True或False np.array.any()是对np.array中所有元素进行或操作,然后结果返回True或Fa ...
-
xcode的打包上线出问题:导入此构建版本时出错
原因:升级mac系统到了High sierra(10.13,目前还是测试版,并没有正式版,全新的文件系统 APFS (Apple File System))发现没有这个问题,于是乎,所以给出这种解决方 ...
-
Metasploit Framework(8)后渗透测试(一)
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 使用场景: Kali机器IP:192.168.163. ...
-
bat如何提取文本指定行的内容
背景:使用CTS框架运行完测试后,会在logs中生成devices_log和host_log,在results中生成相应的结果(报告).根据报告信息我们可以得知失败的用例,但是却不能知道为什么用例会失 ...