http://tobeytailor.s3.amazonaws.com/get_barcode_from_image/index.html https://gist.github.com/421369 /* * Copyright (c) 2010 Tobias Schneider * This script is freely distributable under the terms of the MIT license. */ (function(){ var UPC_SET = { "3211": '0', "2221": '1', "2122": '2', "1411": '3', "1132": '4', "1231": '5', "1114": '6', "1312": '7', "1213": '8', "3112": '9' }; getBarcodeFromImage = function(imgOrId){ var doc = document, img = "object" == typeof imgOrId ? imgOrId : doc.getElementById(imgOrId), canvas = doc.createElement("canvas"), ctx = canvas.getContext("2d"), width = img.width, height = img.height, spoints = [1, 9, 2, 8, 3, 7, 4, 6, 5], numLines = spoints.length, slineStep = height / (numLines + 1); canvas.width = width; canvas.height = height; ctx.drawImage(img, 0, 0); while(numLines--){ console.log(spoints[numLines]); var pxLine = ctx.getImageData(0, slineStep * spoints[numLines], width, 2).data, sum = [], min = 0, max = 0; for(var row = 0; row < 2; row++){ for(var col = 0; col < width; col++){ var i = ((row * width) + col) * 4, g = ((pxLine[i] * 3) + (pxLine[i + 1] * 4) + (pxLine[i + 2] * 2)) / 9, s = sum[col]; pxLine[i] = pxLine[i + 1] = pxLine[i + 2] = g; sum[col] = g + (undefined == s ? 0 : s); } } for(var i = 0; i < width; i++){ var s = sum[i] = sum[i] / 2; if(s < min){ min = s; } if(s > max){ max = s; } } var pivot = min + ((max - min) / 2), bmp = []; for(var col = 0; col < width; col++){ var matches = 0; for(var row = 0; row < 2; row++){ if(pxLine[((row * width) + col) * 4] > pivot){ matches++; } } bmp.push(matches > 1); } var curr = bmp[0], count = 1, lines = []; for(var col = 0; col < width; col++){ if(bmp[col] == curr){ count++; } else{ lines.push(count); count = 1; curr = bmp[col]; } } var code = '', bar = ~~((lines[1] + lines[2] + lines[3]) / 3), u = UPC_SET; for(var i = 1, l = lines.length; i < l; i++){ if(code.length < 6){ var group = lines.slice(i * 4, (i * 4) + 4); } else{ var group = lines.slice((i * 4 ) + 5, (i * 4) + 9); } var digits = [ Math.round(group[0] / bar), Math.round(group[1] / bar), Math.round(group[2] / bar), Math.round(group[3] / bar) ]; code += u[digits.join('')] || u[digits.reverse().join('')] || 'X'; if(12 == code.length){ return code; break; } } if(-1 == code.indexOf('X')){ return code || false; } } return false; } })();
使用例子:
<!DOCTYPE html> <html> <head> <title>Barcode recognition with JavaScript</title> <script type="text/javascript" src="get_barcode_from_image.js"></script> </head> <body> <img id="barcode" src="barcode.jpg"/> <br/> <button onclick="alert(getBarcodeFromImage('barcode'))">Scan</button> </body> </html>
相关推荐
未激活的Zend Studio可能只能提供有限的功能或者在一段时间后停止工作,而有效的注册码可以解锁所有功能,并允许用户长期使用该软件。 #### 三、关于提供的注册码 根据题目中的描述,这里给出的是一个适用于Zend ...
本文将深入探讨一个基于Java语言实现的相似图像识别系统,该系统据称能实现高达95%的准确率,主要利用了直方图比较算法,并在实际测试中表现出优于传统图像指纹哈希算法的性能。 首先,我们要理解图像识别的基本...
本文将深入探讨一个基于Java语言实现的相似图像识别系统,该系统利用直方图比较算法,据称其性能优于基于图像指纹的哈希算法。 直方图比较算法是图像处理中的基本方法,它主要关注图像的颜色分布。在图像识别过程中...
随着近期互联网泄密事件的频繁发生,网易公司推出了基于人脸识别技术的邮箱登录方式,让用户在输入密码之外,还可以通过摄像头“刷脸”验证身份,这一举措在国际上尚属首例。 人脸识别技术的核心在于通过摄像头捕捉...
本项目名为"数字密码键盘(6位)",从描述来看,它是一个经过自定义设计、功能完备且据称没有明显错误的代码实现。接下来,我们将深入探讨这个项目可能涉及到的IT知识点。 首先,密码键盘的设计通常会使用前端技术...
本资源包含三个OCR程序,其中一个据称可以直接使用,而另外两个虽然能够运行,但可能需要一定的理解和调试才能完全掌握。这可能是因为OCR涉及复杂的图像预处理、特征提取和分类算法,对于初学者来说可能会有些难度。...
众所周知,黑洞的事件视界通常可以从某些曲率不变量的零中识别出来。 较小尺寸的情况尚未完全弄清楚。 在这项工作中,我们研究了($$ 2 + 1 $$ 2 + 1)-和($$ 1 + 1 $$ 1 + 1 + 1)维静态,静态和动态黑洞的黑洞...
在本项目中,我们探讨的是一个基于C#编程语言实现的验证码识别系统,该系统据称具有较高的识别率,适合学习和研究。 首先,我们要了解验证码的基本原理。验证码(CAPTCHA)是“Completely Automated Public Turing ...
而“12306查询验证码识别客户端”正是针对这一需求开发的工具,据称其正确率高达92%以上,显著提高了用户手动输入验证码的效率。 该客户端的工作流程大致分为以下几个步骤: 1. **图像获取**:当用户触发验证码...
虽然描述中提到的注册码据称经过了验证,但在实际操作中仍需谨慎,最好通过官方渠道获取正版软件和相应的授权码,以确保合法使用并获得持续的技术支持。此外,随着软件技术的发展,建议用户关注最新的优化大师版本,...
2. **识别芯片**:通过读取NAND Flash的ID信息,识别出具体的型号,以便于后续的读写操作。 3. **擦除操作**:在指定的块上执行擦除操作,确保所有数据被清除。需要注意的是,擦除操作不可逆,因此需谨慎执行。 4....
.exe后缀表明这是一个可执行文件,通常在Windows系统中运行。 【相关知识点】: 1. 密码管理:软件可能提供了一种集中管理和复制密码的方式,避免用户手动输入。 2. 快捷键操作:F11和F10的使用展示了软件对快捷键...
由于公司前段时间在打造一个开发平台,而我主要负责工作流模块,于是就接触到了`bpmn-js`。但众所周知,`bpmn-js` 文档是全英的,相关资料少,填坑的人更少,所以开发起来并没有那么好上手。于是我研究了一段时间,...
我们推测,每三个三维规范奇异点定义一个五维N $$ \ mathcal {N} $$ = 1 SCFT。 可以从奇异结构中发现风味对称性:从一维奇异位点的奇异类型读取非阿贝尔风味对称性。 库仑分支的维数由奇异点的新奇解析度中紧凑的...
该项目的目的是创建一个工具,该工具可以使用他们产生的文本来帮助识别患有临床抑郁症的人。 已经观察到,在文字制作中存在某些特定于抑郁症患者的线索() 动机 据称,自杀的人中约有50-70%患有临床抑郁症( )。 ...
比尔密码由托马斯·比尔(Thomas Beale)在19世纪创建,据称其中隐藏了他在弗吉尼亚州发现的一笔巨额黄金和银矿的秘密位置。比尔密码由三份密码文档组成,每份都用一种不同的替换密码编写的,这些密码至今仍未完全...
毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以直接使用。毕业设计、课程设计源码文件,已经过测试可以...
《手机号码归属地数据1315》是一个包含详尽手机号码信息的资源,主要以XLS格式存储,便于数据分析和处理。这份资料是保罗万有提供的,据称是不可多得的珍藏版,意味着它可能包含了全面、最新的手机号码归属地信息。 ...
在本案例中,我们讨论的是一个名为“完美验证码识别系统V3.1”的系统,据称它具有100%的识别率和毫秒级的识别速度。这个系统是用易语言编写的,易语言是一种中文编程语言,旨在简化编程过程,使非专业程序员也能进行...