Node.js如何调用OpenCV读取图像数据矩阵
沉沙 2018-07-26 来源 : 阅读 1791 评论 0

摘要:本篇Node.js教程探讨了Node.js如何调用OpenCV读取图像数据矩阵,希望阅读本篇文章以后大家有所收获,帮助大家对Node.js的理解更加深入。

最近在做一个feature,在地图中布置道具,想法是可以绘制任意图像曲线的轨迹,思路是,读取一个图像,二值化,根据地图中需要的长宽,缩放图像,然后将图像转化为二维数组做为绘制图像的数据源。

这里要用到几个图像处理的操作,所以查找了下当前的图像处理库,觉得OpenCV是个不错的选择,而且由于新版本的openCV是用C++编写,很多git上的开源项目将opencv封装后给javascript调用,我用的是node-opencv

 

其实图像文件除了像素信息还存储了很多数据,我需要的,只是像素信息,那么首先要知道图像的通道是多少,像灰度图,它的通道是1,常用的RBG图,通道就是3, 也就是说,一个100100的图像,每一行,其实是有1003个项,就是说,每一个像素,存储了R,G,B三个像素的信息。

知道了这些信息,事情就好办多了,下边是我是用node-opencv写的代码:

    function BinaryArrayFromImage(imagePath, width, height)

    {

    var cv = require('../opencv/lib/opencv');

    cv.readImage(imagePath, function(err, im) {

      if (err) throw err;

      var w = im.width();

      var h = im.height();

      if (w < 1 || h < 1) throw new Error('Image has no size');

    

      var binaryImage = im.threshold(200, 255, "Binary");

      console.log("image converted to binary image");

      

      binaryImage.resize(width,height);

      

      //  binaryImage.convertGrayscale();

      console.log(binaryImage.channels());

    

       var imageMatrix = new Array();

    

       for(i=0;i<height;i++)

       {

       imageMatrix[i] = new Array();

       var index = 0;

       for(j=0;j<width*3;j+=3)

       {

       if(binaryImage.pixelRow(i)[j]<100)

       {

       imageMatrix[i][index]=1;

       }

       else

       {

       imageMatrix[i][index]=0;

       }

       index++;

       }

       

       }

       binaryImage.save('./convertedImage.jpg');

    

       return imageMatrix;

    });

    }

 

本文由职坐标整理并发布,了解更多内容,请关注职坐标WEB前端Node.js频道!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程