计算机视觉

    MacOS 可使用 brew 来安装:

    请使用稳定的v2(2.4.13.2)版本,源码包,windows 平台的安装请参考 OpenCV 官网

    如果不想本机安装使用的请直接使用后面提到的 NodeCV 服务,避免环境的诸多问题。

    各语言使用方法

    Node.js:

    只需要引入 模块即可完成图像相似度,特征匹配,特征识别等功能,如下示例。

    1. nodecv.imread(image1Path, (err, image1) => {
    2. if (err) {
    3. throw err;
    4. }
    5. if (err) {
    6. throw err;
    7. }
    8. nodecv.imageDissimilarity(image1, image2, (err, dissimilarity) => {
    9. if (err) {
    10. throw err;
    11. }
    12. console.log(`Dissimilarity: ${dissimilarity}`);
    13. });
    14. });

    匹配方式枚举:

    1. CV_TM_SQDIFF =0 平方差匹配法
    2. CV_TM_SQDIFF_NORMED =1 归一化平方差匹配法
    3. CV_TM_CCORR =2 相关匹配法
    4. CV_TM_CCORR_NORMED =3 归一化相关匹配法
    5. CV_TM_CCOEFF =4 相关系数匹配法
    6. CV_TM_CCOEFF_NORMED =5 归一化相关系数匹配法

    更多 Node.js 示例请访问 macaca-sample/cv-sample-node

    Python:

    Java:

    Java 端请直接使用 ,更多 Java 示例请访问 macaca-sample/cv-sample-java

    Macaca 提供便捷的 Opencv 服务部署,只需要 Docker 环境便可一键部署。

    1. $ git clone https://github.com/macacajs/nodecv-server.git --depth=1
    2. $ docker build . -t="node-server"

    然后便可在任意服务器环境,甚至启动 OpenCV 的 HTTP 服务,macaca-sample 也提供各语言针对服务端通信的示例。

    服务启动成功后可访问 demo 页面:

    1. POST /opencv/dissimilarity

    请求 HTTP 服务示例:

    1. request.post({
    2. url: `${remoteHost}/opencv/dissimilarity`,
    3. formData: formData
    4. }, function(err, httpResponse, body) {
    5. if (err) {
    6. return console.error('upload failed:', err);
    7. }
    8. console.log('Server responded with:', body);
    9. try {
    10. const data = JSON.parse(body);
    11. console.log(`Dissimilarity is: ${data.dissimilarity}`);
    12. } catch (e) {
    13. }
    14. });

    Sikuli

    Sikuli 是一种图形脚本语言,与 Macaca 配合使用可适应特定的测试场景,更多请见官网sikuli

    在文字识别等方面非常专业,可与 OpenCV 配合使用。

    Image Diff

    基于像素点对比的图像 Diff,可以使用:

    计算机视觉 - 图1

    游戏框架 Hilo 也是基于像素点对比的,与 Macaca 结合使用示例见 hiloteam/Hilo 官网