tracking.js活体检测和opencv 对比,公司需求对比?

&&&&tracking.js是页面识别人脸的一个插件,首先是tracking.js的git地址:。
&&&&在下载完tracking.js后,我们需要一个能测试的页面,这个页面需要在服务器上,比如本地的localHost:8080。然后需要引入两个检查人脸必须的文件tracking-min.js和face-min.js。
var video = document.getElementById('video');
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
var tracker = new tracking.ObjectTracker('face');
tracker.setInitialScale(4);
tracker.setStepSize(2);
tracker.setEdgesDensity(0.1);
tracking.track('#video', tracker, { camera: true });
tracker.on('track', function(event) {
context.clearRect(0, 0, canvas.width, canvas.height);
event.data.forEach(function(rect) {
context.strokeStyle = '#a64ceb';
context.strokeRect(rect.x, rect.y, rect.width, rect.height);
context.font = '11px Helvetica';
context.fillStyle = "#fff";
context.fillText('x: ' + rect.x + 'px', rect.x + rect.width + 5, rect.y + 11);
context.fillText('y: ' + rect.y + 'px', rect.x + rect.width + 5, rect.y + 22);
上面这些事主要的人脸检测使用代码其中:
tracker.setInitialScale(4);
tracker.setStepSize(2);
tracker.setEdgesDensity(0.1);
这些是设置的参数,文档中没有明确的说明,暂时不知道用处。可以通过tracker.stop()来停止页面对人脸的监听。
如果是要监听摄像头的人像就必须判断浏览器是否支持接入摄像头,其中最主要的方法是navigator.getUserMedia,具体的说明参考。在获取摄像头之后就可以监听摄像头,判断是否有人脸,在track事件中就可以截取需要的图片。
具体的截取方法:
var canvas = $('canvas'),
context = canvas.getContext('2d'),
video = $('video');
context.drawImage(video, 0, 0, 200, 150);
var snapData = canvas.toDataURL('image/png'),
var imgSrc = "data:image/" + snapD
imgSrc 可以直接用于页面图片的显示。
脸部识别JavaScript类库Tracking.js
人脸检测+人脸提取
没有更多推荐了,发布于 03/02 15:09
OpenCV ( Open Source Computer Vision Library ),是一个基于C/C++语言的计算机视觉库,在跨平台图像/视频处理、模式识别、人机交互、机器人等领域有广泛的应用。
OpenCV 包含机器学习库,支持传统的机器学习算法(决策树、朴素贝叶斯、支持向量机、随机森林等),近期的版本演进侧重于增强深度学习的支持,例如
将深度神经网络(Deep neural networks,DNN ) 提升到主代码库(promote DNN module from opencv_contrib to the main repository),2017 年 12 月发布的 OpenCV 3.4 针对 R-CNN 进行了性能优化。
OpenCV 的主要编程是 C++ ,大部分的接口也是基于 C++,但它仍然保留着很多 C 接口(功能不完整)。绑定语言(binding)有 Python,java 和 MATLAB /OCTAVE ,另外还有一些其他语言的包装器(wrapper)如 C# , Perl , Haskell 和 Ruby。 项目是一个支持所有 OpenCV 3 的 Node.js 绑定,有助于弥补 JavaScript 缺乏计算机视觉实现的不足,为 Node.js 优势应用场景的选型中提供了更多选择(例如使用 WebSocket 推送技术创建实时 Web 应用)。
前文回顾: 中演示了一个图像识别的案例,我们来看看基于 OpenCV + Node.js 是如何实现的:
Using OpenCV with Node.js
Enviroment
$ cmake --version
cmake version 3.10.2
$ brew install cmake
$ brew install opencv3
# dependencies for opencv: eigen, lame, x264, xvid, ffmpeg, libpng,
# libtiff, ilmbase, openexr, gdbm, python, xz, python3, numpy, tbb
$ mkdir project-opencv-demo
$ cd project-opencv-demo
$ npm init
$ npm install --save opencv4nodejs
Load InceptionModel
Tensorflow Inception Model 是一个已经被训练好的模型,可以识别数千类对象,只要将图像输入就可以输出推测的一个分类概率。Tensorflow Inception Model 包括 ‘graph.pb’ 和 ‘label_strings.txt’ 两个文件,使用之前需要先加载。
const cv = require('opencv4nodejs');
//const cv = require('../');
const fs = require('fs');
const path = require('path');
if (!cv.xmodules.dnn) {
throw new Error('exiting: opencv4nodejs compiled without dnn module');
// replace with path where you unzipped inception model
const inceptionModelPath = './models/tf-inception'
const modelFile = path.resolve(inceptionModelPath, 'tensorflow_inception_graph.pb');
const classNamesFile = path.resolve(inceptionModelPath, 'imagenet_comp_graph_label_strings.txt');
if (!fs.existsSync(modelFile) || !fs.existsSync(classNamesFile)) {
console.log('exiting: could not find inception model');
console.log('download the model from: https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip');
console.log('load models:'+inceptionModelPath)
// read classNames and store them in an array
const classNames = fs.readFileSync(classNamesFile).toString().split(&\n&);
// initialize tensorflow inception model from modelFile
const net = cv.readNetFromTensorflow(modelFile);
Image Classify
读取图片存储为 Blob 格式,调用 net.forward() (图像作为输入参数),此处我们仅输出概率高于 5% 的分类。
const classifyImg = (img) =& {
// inception model works with 224 x 224 images, so we resize
// our input images and pad the image with white pixels to
// make the images have the same width and height
const maxImgDim = 224;
const white = new cv.Vec(255, 255, 255);
const imgResized = img.resizeToMax(maxImgDim).padToSquare(white);
// network accepts blobs as input
const inputBlob = cv.blobFromImage(imgResized);
net.setInput(inputBlob);
// forward pass input through entire network, will return
// classification result as 1xN Mat with confidences of each class
const outputBlob = net.forward();
// find all labels with a minimum confidence
const minConfidence = 0.05;
const locations =
outputBlob
.threshold(minConfidence, 1, cv.THRESH_BINARY)
.convertTo(cv.CV_8U)
.findNonZero();
const result =
locations.map(pt =& ({
confidence: parseInt(outputBlob.at(0, pt.x) * 100) / 100,
className: classNames[pt.x]
// sort result by confidence
.sort((r0, r1) =& r1.confidence - r0.confidence)
.map(res =& `${res.className} (${res.confidence})`);
const testData = [
image: './data/IMG_3560.png',
label: 'Yan Dog'
image: './data/IMG_3608.png',
label: 'Yang Dog'
testData.forEach((data) =& {
const img = cv.imread(data.image);
console.log('%s,%s: ', data.image,data.label);
const predictions = classifyImg(img);
predictions.forEach(p =& console.log(p));
//cv.imshowWait('img', img);
console.log(&---------finish---------&);
$ npm run tf-classify
& node ./tf-classify.js
load models:./models/tf-inception
-------------------------------
./data/IMG_3560.png,Yan Dog:
[ INFO:0] Initialize OpenCL runtime...
潘布魯克威尔斯柯基犬 Pembroke (0.83)
-------------------------------
./data/IMG_4423.png,Yang Dog:
吉娃娃 Chihuahua (0.89)
Pembroke (0.07)
-------------------------------
./data/IMG_3608.png,Yang Dog:
玩具梗 toy terrier (0.22)
美国斯塔福德郡梗 American Staffordshire terrier (0.2)
吉娃娃 Chihuahua (0.14)
斯塔福德郡牛头梗 Staffordshire bullterrier (0.12)
比特犬 whippet (0.05)
-------------------------------
问题:对比之前
的预测值,两次识别的结果很接近,但是又有不同,这是为什么呢?请注意后续更新。
附录:OpenCV 概要
OpenCV 版本
OpenCV 第一个预览版本于 2000 年在 IEEE Conference 公开,目前每6个月就会有一个官方版本,由一个商业公司赞助的独立小组开发。
OpenCV 1.0:2006年发布
OpenCV 2.0:2009年10月发布,主要更新包括 C++ 接口
OpenCV 2.3:2011年6月发布,主要更新包括移动终端兼容性(NDK-Build)
OpenCV 3.0:2015年6月发布
OpenCV 3.3: 2017年8月发布,主要更新包括深度学习(promote DNN module from opencv_contrib to the main repository)
OpenCV 3.4: 2017年12月发布,主要更新包括 DNN 模块改进(包括 R-CNN 性能优化), Javascript 绑定和 OpenCL 实现
$ pkg-config --modversion opencv
OpenCV 主要模块
cv 核心函数库
cvaux 辅助函数库
cxcore 数据结构与线性代数库
highgui GUI 函数库,包括用户界面、读/写图像及视频
ml 机器学习函数库,包括统计模型、贝叶斯、最近邻居、支持向量机、决策树、随机树、最大期望、神经网络等,详见。
gpu GPU加速,GPU模块及数据结构,包含图像处理与分析模块
OpenCV 主要功能
图像数据操作(内存分配与释放 allocation & release,图像复制 copying、设定和转换 setting & conversion)
矩阵/向量数据操作及线性代数运算(矩阵乘积、矩阵方程求解、特征值、奇异值分解)
支持多种动态数据结构(链表、队列、数据集、树、图)
基本图像处理(去噪、边缘检测、角点检测、采样与插值、色彩变换、形态学处理、直方图、图像金字塔结构)
结构分析(连通域/分支、轮廓处理、距离转换、图像矩、模板匹配、霍夫变换、多项式逼近、曲线拟合、椭圆拟合、狄劳尼三角化)
图像/视频的输入输出(支持文件或摄像头的输入,图像/视频文件的输出)
摄像头定标(寻找和跟踪定标模式、参数定标、基本矩阵估计、单应矩阵估计、立体视觉匹配)
运动分析(光流 optical flow、动作分割 motion segmentation、目标跟踪 tracking)
OpenCV 基本数据类型
CvPoint:表示一个坐标为整数的二维点
CvSize:表示矩阵框大小,以像素为精度。
CvRect:通过方形左上角坐标和方形的高和宽来确定一个矩形区域
CvScalar:用来存放像素值( double 数组,不一定是灰度值)
//图像中点的x坐标
//图像中点的y坐标
typedef struct CvSize
typedef struct CvRect   
//方形的左上角的x-坐标   
//方形的左上角的y-坐标 
typedef struct CvScalar
double val[4];
OpenCV 与机器学习
OpenCV 包含机器学习库,支持以下算法:
Decision tree learning
Gradient boosting trees
Expectation-maximization algorithm
k-nearest neighbor algorithm
Naive Bayes classifier
Artificial neural networks
Random forest
Support vector machine (SVM)
Deep neural networks (DNN) ( promote DNN module from opencv_contrib to the main repository)
OpenCV 资源
更多精彩内容扫码关注公众号:
& 著作权归作者所有
人打赏支持
码字总数 164054
  选自Medium   作者:Vladimir Goncharov   机器之心编译   参与:Huiyuan Zhuo、思源、刘晓坤      作者 Vladimir Goncharov 平常主要关注与研究两个主题:PHP 和 Server Adm...
OpenCV是一个很基于 Python的开源视觉识别工具。 在这里,我们相信地介绍了如何如何在pcDuino上安装OpenCV。 然后给出了两个例子。 第一个例子是介绍如何用OpenCV抓图像,第二个例子介绍如何...
转载自:https://blog.csdn.net/Times_poem/article/details/,总结的资源还挺多,也很杂,有的东西以前研究过,还是不错的,先囤着吧,以后有空可以看看~ 需求说明:深度学习FPGA实...
edward_zcl
经常看到有学习OpenCV不久的人提问,如何识别一些简单的几何形状与它们的颜色,其实通过OpenCV的轮廓发现与几何分析相关的函数,只需不到100行的代码就可以很好的实现这些简单几何形状识别与...
gloomyfish
本文转自CSDN(订阅号id:CSDNnews),经平台同意授权转载。 Face ID 的兴起带动了一波面部识别技术热潮。本文将介绍如何使用 OpenCV、Python 和深度学习在图像和视频中实现面部识别,以基于...
Qunar技术沙龙
没有更多内容
加载失败,请刷新页面
ExTiX 18.7 已发布,ExTiX 是基于 Ubuntu 的桌面 Linux 发行,其中包含备用桌面环境和应用程序。该版本使用的是 LXQt 桌面而不是 Ubuntu 的默认 GNOME 桌面环境。 ExTiX 18.7 LXQt DVD 64 位...
Redis数据的备份和恢复 Redis SAVE 命令用于创建当前数据库的备份。 步骤: 1、连接上需要做数据备份的redis实例 2、执行SAVE 命令 该命令将在 redis 安装目录中创建dump.rdb文件。 恢复数据...
1.单例模式 单例模式顾名思义,就是只有一个实例。作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 单例模式的要点有三个: 一是某个类只...
让重刑犯做瑜伽:新西兰人性化监狱的故事 毛西
1.今日导读 监狱的目的是什么?这是一个引发争议的话题。本篇新闻中,新西兰的暴力囚犯们可以在草地上散步、享受日光浴和练习瑜伽,...
mvn clean install -Dmaven.test.skip=true
开源中国封号找我
没有更多内容
加载失败,请刷新页面
文章删除后无法恢复,确定取消删除此文章吗?
亲,自荐的博客将通过私信方式通知管理员,优秀的博客文章审核通过后将在博客推荐列表中显示
确定推荐此文章吗?
确定推荐此博主吗?
聚合全网技术文章,根据你的阅读喜好进行个性推荐
指定官方社区
深圳市奥思网络科技有限公司版权所有跟踪就是在连续视频帧中定位物体,通常的跟踪算法包括以下几类:
1. Dense Optical Flow 稠密光流
2. Sparse Optical Flow 稀疏光流 最典型的如KLT算法(Kanade-Lucas-Tomshi)
3. Kalman Filter
4. Meanshift and Camshift
5. Multiple object tracking
需要注意跟踪和识别的区别,通常来说跟踪可以比识别快很多,且跟踪失败了可以找回来。
OpenCV 3以后实现了很多追踪算法,都实现在contrib模块中,安装。
下面code实现了跟踪笔记本摄像头画面中的固定区域物体,可以选用OpenCV实现的算法
#include &opencv2/opencv.hpp&
#include &opencv2/tracking.hpp&
using namespace
using namespace
int main(int argc, char** argv){
// can change to BOOSTING, MIL, KCF (OpenCV 3.1), TLD, MEDIANFLOW, or GOTURN (OpenCV 3.2)
Ptr&Tracker& tracker = Tracker::create("MEDIANFLOW");
VideoCapture video(<span style="color: #);
if(!video.isOpened()){
cerr && "cannot read video!" &&
return -<span style="color: #;
video.read(frame);
Rect2d box(<span style="color: #0, <span style="color: #0, <span style="color: #0, <span style="color: #0);
tracker-&init(frame, box);
while(video.read(frame)){
tracker-&update(frame, box);
rectangle(frame, box, Scalar(<span style="color: #5, <span style="color: #, <span style="color: #), <span style="color: #, <span style="color: #);
imshow("Tracking", frame);
int k=waitKey(<span style="color: #);
if(k==<span style="color: #) break;
&着重了解效果较好的KCF(Kernelized Correlation Filters)和经典的KLT算法
阅读(...) 评论()1.cmake 编辑opencv 的源代码路径(带有makelist的目录),生成opencv相关lib文件。configure两次后,点击generate
2.添加opencv include目录到项目进行vc开发,如果要在nodejs中使用opencv,在编译构建完项目后出现如图项目:
编译运行vc10,生成bin文件夹和lib文件。不过nodejs中使用的目录结构是opencv bin安装包的目录结构,所以通过cmake编译出来的vc项目默认是有debug和release目录的,需要根据nodejs opencv源码readme.md中的描述,设置相应的环境变量和目录结构,nodejs opencv 使用了bin和lib目录,node-gyp编译的js源码中可以看到相应的环境变量和目录结构检测代码。
3.node-gyp编译opencv过程中,出现如下 WindowsSDKDir不存在错误,需要下载windows kit 8.1版本解决,并且path环境变量中添加cl路径,保证cl能单独运行(鼠标双击无错误提示,可能需要在VS\\Common7\IDE目录下拷贝 mspdb100.dll、mspdbcore.dll、mspdbsrv.exe文件),重启nodejs控制台。
如果出现stddef.h找不到,说明vc环境变量未添加,需要运行vc环境下的vcvarsall.bat,在使用npm install
如果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调用
init为项目创建package.json(项目依赖配置)
最终在windows上还是编译错误:
在C盘全局node配置中node-gyp中查到,node-gyp使用的3.6.1的版本
中的v8.h和node.h使用的VS2015或者更高的版本,而我用的VS2010,只支持C++11标准,对于C++14和17都不支持,cl编译起有差别导致编译错误。解决办法:下载nodejs开源代码的老本本支持VS2010的,node-gyp构建vcproject后,手动添加nodejs include生成node文件。
安装纯净版的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 ls 查看目录结构
npm list -g
查看安装的包
npm list 模块名
npm-gyp源码编译C++扩展(python还有gyp和scons构建项目)
node-gyp configure 错误:http://blog.csdn.net/lengyoumo/article/details/
npm update 更新当前项目或着指定模块
npm init 在当前生成pakage.json文件
npm-pre-gyp
二进制包C++扩展
npm-install
grunt-node-inspector 简单配置
npm-install
--production安装错误报告
nodejs-opencv
需要安装c++版本的opecv 在目录build下配置环境变量OPENCV_DIR并添加path路径%OPENCV_DIR\bin%
nodejs 淘宝镜像安装:(-g全局安装(node_module下的npm目录npmrc配置prefix和cache),否则本地安装,下载文件到cmd启动目录)
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
7天学会NodeJs(里面讲了很多,最后一个大例子,更是讲了一些工程开发流程,很有收获)
OpenCV 入门:用 Node.js 进行图片处理 (译文)
机器学习实战:用nodejs实现人脸识别
基于 Node-red实现opencv边缘检测节点
没有更多推荐了,OpenCV 入门:用 Node.js 进行图片处理 (译文) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
已注册用户请 &
PPA for Ubuntu
> ppa:chris-lea/node.js
OpenCV 入门:用 Node.js 进行图片处理 (译文)
19:36:33 +08:00 · 5445 次点击
在这篇 OpenCV 入门文章中,我将会向大家展示如何使用 Node.js 进行计算机视觉处理。并且结合实例讲解使用 OpenCV 这个开源库进行图像处理的基础方法。
目前,我正在完成我的硕士论文,其中使用到了 React Native ,神经网络,和 OpenCV 计算机视觉库。请允许我向你们展示一些我在使用 OpenCV 过程中学习到的一些东西。
计算机视觉是计算机科学中的一个领域,主要专注于使用不同的算法从图像和视频中获取数据。
计算机视觉在许多领域得到了广泛地应用,例如安全摄像头的运动跟踪,控制车辆进行自动驾驶,从图片或视频中识别或搜索对象。
要实现计算机视觉算法是一件非常繁复的工作,不过幸好有
这个非常好的开源库,此库起源于 1999 年,并一直发展到现在。
OpenCV 官方支持 C , C ++, Python 和 Java 。幸运的是,由 Peter Braden 领导的一群 Javascript 程序员开发了一个 Javascript 的 OpenCV 接口库,名为 。
利用该接口库,我们可以实现用于图像分析的 Node.js 应用。此库目前还没有实现所有的 OpenCV 特性 - 特别是 OpenCV 3 的一些特性 - 不过已经基本够用了。
要在 Node.js 中使用 OpenCV 库,你得先进行全局安装。在 MacOS 上,你可以通过
来安装。在这篇文章中我安装并使用的是 OpenCV 的 2.4 版本。
译者注:由于译者实际使用的是 OpenCV 3.2.0 版本,故在边缘侦测部分的代码相对于原文有所修改。
brew tap homebrew/science
brew install opencv
如果你使用的是其它的操作系统,这里有
版本的教程。在成功安装之后,我们就可以在 Node.js 项目中安装 node-opencv 了。
npm install --save opencv
有时安装会失败(它是开源项目,还没有到达最终完成的阶段),不过你应该可以在上找到对应的解决办法。
OpenCV 基础
加载及保存图片 + 矩阵
OpenCV 的最基本功能是加载和保存图像。你可以通过下面的方法调用这些功能:cv#readImage() 和 **Maritx#save()**;
const cv = require('opencv');
cv.readImage('./img/myImage.jpg', function(err, img) {
if (err) {
const width = im.width();
const height = im.height();
if (width & 1 || height & 1) {
throw new Error('Image has no size');
// do some cool stuff with img
// save img
img.save('./img/myNewImage.jpg');
承载加载图片数据的对象,是 OpenCV 使用的一个基本数据结构 - 矩阵。所有载入和生成的图像都是用矩阵来描述的,矩阵中的每一个元素都对应图像的一个像素。矩阵的大小由载入图像的大小决定。在 Node.js 中你可以使用特定参数调用 new Matrix() 构造方法来生成一个矩阵。
new cv.Matrix(rows, cols);
new cv.Matrix(rows, cols, type, fillValue);
变换图像颜色是一个基础方法。例如,我们可以调用 Matrix#convertGrayscale() 得到一个灰度图片。
img.convertGrayScale();
img.save('./img/myGrayscaleImg.jpg');
在进行边缘探测时经常会用到这个方法。
我们可以使用 Matrix#convertHSVscale() 方法将图像转换为 HSV 圆柱坐标表示( HSV cylindrical-coordinate representation )。
img.convertHSVscale();
img.save('./img/myHSVscaleImg.jpg');
我们可以使用 Matrix#crop(x, y, width, height) 方法来裁剪图片,并指定其中的参数。
这个方法并不会改变当前的图像,而是返回一个全新的图像。
let croppedImg = img.crop(, );
croppedImg.save('./img/croppedImg');
如果我们想要将图像对象赋值给另一个变量,可以使用 Matrix#copy() 方法返回一个新的图片对象。
let newImg = img.copy();
这样,我们可以用一些基础的 Matrix 方法进行工作了。我们还能找到各种模糊和滤镜方法来进行图片编辑。你可以在 GitHub 项目里的
文件中找到 Matrix 对象实现的所有方法。
腐蚀和膨胀
腐蚀和膨胀是数学形态学( mathematical morphology )的基本方法。我将结合下面的图像修改操作来解释它们是如何工作的。(译者注:具体数学定义可)
二进制图像 A 通过结构元素 B 的膨胀定义如下
OpenCV 有一个 Matrix#dilate(iterations, structEl) 方法,其中的 iterations 参数指定膨胀的量,structEl 参数是用于膨胀的结构元素(默认为 3X3 )。
我们可以用此参数调用膨胀方法。
img.dilate(3);
OpenCV 调用膨胀方法时如下。
cv::dilate(self-&mat, self-&mat, sturctEl, cv::Point(-1, -1), 3);
调用过此方法后,我们可以得到如下修改过的图像。
二进制图像 A 通过结构元素 B 的腐蚀定义如下
在 OpenCV 中,我们可以调用 Martix#erode(iterations, structEl) 方法,和前面的膨胀方法相似。
我们可以这样调用它:
img.erode(3);
同样我们可以得到一个腐蚀过的图像。
关于边缘侦测,我们可以使用「坎尼边缘探测算法」。该算法起源于 1986 年,并且一个非常流行,被称作「最佳探测器」。算法规定了边缘侦测中三个重要的标准,列举如下:
边缘侦测要保证低错误率;
良好的边缘定位 - 探测到的边缘和实际边缘像素差必须最小;
图像的边缘只能被标记一次;
在使用「坎尼边缘探测算法」前,我们可以先将图像转为灰度格式,通常这样做可以让我们获得更好的结果。接下来,我们可以通过高斯模糊滤镜消除图像上的噪点,它需要一个向量作为高斯核大小的参数( which receives a parameter as a field - Gaussian kernel size )。再调用这两个方法处理过后,我们可以在坎尼边缘侦测时获得更好更准确的结果。
目前尚无回复
& · & 2960 人在线 & 最高记录 3762 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 16ms · UTC 01:28 · PVG 09:28 · LAX 18:28 · JFK 21:28? Do have faith in what you're doing.}

我要回帖

更多关于 trackingnumber 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信