关于条形码或条形码和二维码的区别系统

条码识别系统,条形码自动识别系统,二维码检测识别系统_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
条码识别系统,条形码自动识别系统,二维码检测识别系统
条​码​识​别​系​统​(​条​形​码​识​别​系​统​)​,​软​硬​件​每​套​包​括​高​速​C​C​D​相​机​,​百​万​高​清​工​业​镜​头​ ​,​条​形​光​源​,​图​像​采​集​卡​,​I​O​接​口​信​号​板​等​。​软​件​功​能​:​条​形​码​识​别​、​二​维​码​识​别​、​数​字​识​别​。​条​码​识​别​系​统​是​应​用​于​商​业​、​邮​政​、​图​书​管​理​、​仓​储​、​工​业​生​产​过​程​控​制​、​交​通​等​领​域​的​自​动​识​别​技​术​,​具​有​输​入​速​度​快​、​准​确​度​高​、​成​本​低​、​可​靠​性​强​等​优​点​,​在​当​今​的​自​动​识​别​技​术​中​占​有​重​要​的​地​位​。
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢18:00 提问
为什么我用ios7 系统的AVFoundation 不能扫描条形码,只能扫描二维码
ViewController.m
Created by mac on 15/6/17.
Copyright (c) 2015年 郑氏集团. All rights reserved.
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) AVCaptureSession *captureS
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *videoPreviewL
@property (weak, nonatomic) IBOutlet UIView *viewP
@property (weak, nonatomic) IBOutlet UILabel *lblS
@property (weak, nonatomic) IBOutlet UIButton *bbitemS
@property (nonatomic) BOOL isR
@property (nonatomic, strong) AVAudioPlayer *audioP
@implementation ViewController
(void)viewDidLoad {
[super viewDidLoad];
_isReading = NO;
_captureSession =
[self loadBeepSound];
// Do any additional setup after loading the view, typically from a nib.
(IBAction)startStopReading:(id)sender {
if (!_isReading) {
if ([self stopReading]) {
[_bbitemStart setTitle:@"Stop"];
[_lblStatus setText:@"Scanning for QR Code..."];
[self startReading];
[_bbitemStart setTitle:@"Start!"];
_isReading = !_isR
(BOOL)startReading {
AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
if (!input) {
NSLog(@"%@", [error localizedDescription]);
return NO;
_captureSession = [[AVCaptureSession alloc] init];
[_captureSession addInput:input];
AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
[_captureSession addOutput:captureMetadataOutput];
dispatch_queue_t dispatchQ
dispatchQueue = dispatch_queue_create("myQueue", NULL);
[captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatchQueue];
captureMetadataOutput.metadataObjectTypes=@[
AVMetadataObjectTypeQRCode,AVMetadataObjectTypeCode39Code,AVMetadataObjectTypeCode128Code,AVMetadataObjectTypeCode39Mod43Code,AVMetadataObjectTypeEAN13Code,AVMetadataObjectTypeEAN8Code,AVMetadataObjectTypeCode93Code];
_videoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession];
[_videoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[_videoPreviewLayer setFrame:_viewPreview.layer.bounds];
[_viewPreview.layer addSublayer:_videoPreviewLayer];
[_captureSession startRunning];
return YES;
-(BOOL)stopReading{
[_captureSession stopRunning];
_captureSession =
[_videoPreviewLayer removeFromSuperlayer];
return YES;
-(void)loadBeepSound{
NSString *beepFilePath = [[NSBundle mainBundle] pathForResource:@"beep" ofType:@"mp3"];
NSURL *beepURL = [NSURL URLWithString:beepFilePath];
_audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:beepURL error:&error];
if (error) {
NSLog(@"Could not play beep file.");
NSLog(@"%@", [error localizedDescription]);
[_audioPlayer prepareToPlay];
-(void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection{
if (metadataObjects != nil && [metadataObjects count] & 0) {
AVMetadataMachineReadableCodeObject *metadataObj = [metadataObjects objectAtIndex:0];
if ([[metadataObj type] isEqualToString:AVMetadataObjectTypeQRCode]) {
[_lblStatus performSelectorOnMainThread:@selector(setText:) withObject:[metadataObj stringValue] waitUntilDone:NO];
[self performSelectorOnMainThread:@selector(stopReading) withObject:nil waitUntilDone:NO];
[_bbitemStart performSelectorOnMainThread:@selector(setTitle:) withObject:@"Start!" waitUntilDone:NO];
_isReading = NO;
if (_audioPlayer) {
[_audioPlayer play];
(void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
其他相似问题
相关参考资料关于iOS原生条形码扫描,你需要注意的两三事
转自 txx's blog 前言 这篇文章是我们在新发布的礼物说的iOS端开发过程中遇到的一些关于条形码的问题总结而来。 本文记录的问题是:当AVFoundation使用多译码器扫描的时候。二维码是秒杀,但是
这篇文章是我们在新发布的的iOS端开发过程中遇到的一些关于条形码的问题总结而来。
本文记录的问题是:当AVFoundation使用多译码器扫描的时候。二维码是秒杀,但是条形码却经常扫不上。如果去掉二维码的话,条形码扫描又秒杀的问题。
为什么我们没有选用ZXing而是用AVfoundation呢,是因为我说服了老板,iOS7开发,而不再去兼容iOS5/6。所以我们终于可以抛弃效率低下的ZXing,而选择AVFoundation。为什么说ZXing效率低下,我们这里可以说上几句。
ZXing 是 Google Code上的一个开源的条形码扫描库,是用java设计的,连Google Glass 都在使用的。但有人为了追求更高效率以及可移植性,出现了c++ port. Github上的Objectivc-C port,其实就是用OC代码封装了一下而已,而且已经停止维护。
ZXing扫描,是拿到摄像头的每一帧,然后对其根据如下公式做灰度化
f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))&&
之后做全局直方图二值化的方法,最后按照进行解析。
这样效率非常低,在instrument下面可以看到CPU占用远远高于 AVFoundation。而且全局直方图二值化导致精准度并不高。这个库还会带来一大堆C++的东西,在纯iOS7的工程下,不推荐使用。
AVFoundation 扫码的简单使用
这里说一下,我们礼物说是和passbook一样,同时可以扫描二维码和条形码,真是因为这个特性,导致了我写这篇总结。 先粘一下扫码实现部份,如下。
-&(BOOL)startReading&{&&&&&_isReading&=&YES;&&&&&NSError&*&&&&&AVCaptureDevice&*captureDevice&=&[AVCaptureDevice&defaultDeviceWithMediaType:AVMediaTypeVideo];&&&&&&AVCaptureDeviceInput&*input&=&[AVCaptureDeviceInput&deviceInputWithDevice:captureDevice&error:&error];&&&&&&if&(!input)&{&&&&&&&&&NSLog(@&%@&,&[error&localizedDescription]);&&&&&&&&&return&NO;&&&&&}&&&&&&_captureSession&=&[[AVCaptureSession&alloc]&init];&&&&&&&&&&[_captureSession&addInput:input];&&&&&&AVCaptureMetadataOutput&*captureMetadataOutput&=&[[AVCaptureMetadataOutput&alloc]&init];&&&&&[_captureSession&addOutput:captureMetadataOutput];&&&&&&&&&&&dispatch_queue_t&dispatchQ&&&&&dispatchQueue&=&dispatch_queue_create(&myQueue&,&NULL);&&&&&[captureMetadataOutput&setMetadataObjectsDelegate:self&queue:dispatchQueue];&&&&&&if&(self.qrcodeFlag)&&&&&&&&&[captureMetadataOutput&setMetadataObjectTypes:[NSArray&arrayWithObject:AVMetadataObjectTypeQRCode]];&&&&&else&&&&&&&&&[captureMetadataOutput&setMetadataObjectTypes:[NSArray&arrayWithObjects:AVMetadataObjectTypeEAN13Code,&AVMetadataObjectTypeEAN8Code,&AVMetadataObjectTypeCode128Code,&AVMetadataObjectTypeQRCode,&nil]];&&&&&&_videoPreviewLayer&=&[[AVCaptureVideoPreviewLayer&alloc]&initWithSession:_captureSession];&&&&&[_videoPreviewLayer&setVideoGravity:AVLayerVideoGravityResizeAspectFill];&&&&&[_videoPreviewLayer&setFrame:self.view.layer.bounds];&&&&&[self.view.layer&addSublayer:_videoPreviewLayer];&&&&&&[_captureSession&startRunning];&&&&&&return&YES;&}&&&-(void)stopReading{&&&&&[_captureSession&stopRunning];&&&&&_captureSession&=&&&&&&[_videoPreviewLayer&removeFromSuperlayer];&}&&-(void)captureOutput:(AVCaptureOutput&*)captureOutput&didOutputMetadataObjects:(NSArray&*)metadataObjects&&&&&&&fromConnection:(AVCaptureConnection&*)connection&{&&&&&if&(!_isReading)&return;&&&&&&if&(metadataObjects&!=&nil&&&&[metadataObjects&count]&&&0)&{&&&&&&&&&AVMetadataMachineReadableCodeObject&*metadataObj&=&[metadataObjects&objectAtIndex:0];&&&&&&&&&&Do&Something....&&&&&}&}&
&这个代码也不需要加什么注释,挺简单易懂的。
我们上面说过了:当AVFoundation使用多译码器扫描的时候。二维码是秒杀,但是条形码却经常扫不上。如果去掉二维码的话,条形码扫描又秒杀的问题。
但有趣的事情是,如果我写了个demo,用上述代码的话。却又可以秒杀扫描。这个问题困扰了我一下午,仔细对比了项目中的每一行代码和我demo中的全部。除了demo没有画一个提示框在屏幕上以外,其他地方全都一模一样。
那么为什么导致项目中扫描效率如此之慢呢?
猜想1: UI以及后台线程占用大量CPU时间
结果在 instrument下,不攻自破,cpu占用,内存占用非常非常低。
猜想2:系统架构问题
因为添加了QRCode才导致扫描变慢的,那么就应该是和算法效率有关。多引入了一个每一帧都要工作的译码器,导致条形码扫描效率下降。我的Demo是arm64 v7s v7 系统全支持,而项目是ArmV7。
这个想法挺异想天开的。觉得可能是Arm64的指令集效率比armv7快得多导致的。我还去问巧哥,armv7和arm64在密集运算的时候效率差多少,会不会比较明显。
但重新配置了一下,还是错误的。
我发现把屏幕横过来扫描效率比竖过来高多了。于是怀疑是不是 Capture 的方向问题。
猜想3: 摄像头方向问题导致解碼效率低
这个猜想,我没有去证实,因为太麻烦了。要给Session 添加一个新的output 来输出每一帧,而且还是个CMBuffer,还要手动转码。不过后面证实这个也是错的。
猜想4:摄像头参数问题
当初看AVCam 写拍照模块的时候,记得摄像头有很多参数,ZXing 也有一个文件位叫做精确解碼,牺牲效率换精确度。于是就在想会不会苹果家的也要设置参数。
于是就坏怀这个问题去看文档去了,结果歪打正着的发现了正确原因。 这是记录在苹果的FAQ中的,并没在AVFoundation 的 Reference 中。具体编号为:
就是描述问题里面说到的,demo和工程里面的唯一区别,多了个surfaceLayer。如下图:
为了正确解释这个有趣的问题,我们要解释一下条形码扫描原理。
上面有提过二维码是通过全局直方图二值化后,按照ISO标准解碼,实际上是,按照1:1:3:1:1去寻找那三个寻像图形,就是标志性的大方块。然后圈出二维码大小再去解碼的。也就是说,再没设定边界的情况下全屏都可以。
而条形码完全不同,他是在Detect Center那个点,画一个无限延伸的米字型,然后去判断每一条在线能否解析出条形码所需要的0101010序列。而iOS默认的Center是 Layer 的 Center。
我们再回过头来看工程中的 SurfaceLayer,其实他提示给用户的那个框,已经远离了Center。所以我们竖着扫描的时候,那条水平的扫描线是没有贯穿条形码的,所以扫不上他。
于是乎要根据设备,iPhone4 iPhone5 通过AVCaptureDeviceFormat和AVCaptureSessionPreset 重新设置一下AVCaptureMetadataOutput rectOfInterest,结果问题就解决了。
为什么去掉二维码就没事了呢?
还在那篇FAQ中,有那么一个表格。
可见,当我们没有二维码的时候,他会有个additional存在。用更加优秀且稍微耗时的算法去优化扫描精准度。
1.当我们遇到问题的时候,不光要记得看 苹果的 guide 和 reference,还要记得看以下 sample code,tech note, FAQ。
2.说不好有意外收获 为什么条形码扫描仪上往往会有一条红线,这并不是为了拟物化,而是告诉用户一定要用这条线对准条形码,否则会有扫不上的可能性。
3.正如福尔摩斯所说:抛开所有不可能的,剩下的,不管多么令人匪夷所思,那都是事实。两套代码仅有UI不一样,效果不同,其实就是UI引导用户错误的使用了扫描仪。
CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广营销经验,最新企业招聘和外包信息,以及Cocos2d引擎、Cocos Studio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!
请搜索微信号“CocoaChina”关注我们!
关注微信 每日推荐
扫一扫 浏览移动版条形码及二维码在生产制造企业仓库管理中的运用 - 信息服务 - 番禺社区企业资讯
           
深圳市永卓欣科技有限公司
咨询电话:0
>条形码及二维码在生产制造企业仓库管理中的运用永卓欣科技开发的电子仓库系统通过条码的管理可以实现一个仓储位放置不同的物料,也可以根据物品规格而任意搭配摆放位置,从而帮忙企业快速管理仓库,节约物料存储空间。
WMS主要功能:
·弹性储放原则:储位可以充分规划用途,可限定储放,也可开放储放,增加储存空间利用率。
·缴库上架整合:修改入库单可以打印条形码,上架及缴库核实一次完成。
·电子导引:透过PDA随身携带性,增加机动力,随时可查阅地图导引理货与拣料作业,引导操作人员迅速正确存取货物。
·地磅核实货柜核实:透过重量管理,确保货物装运在正确货柜,核实也可以透过出货指令条形码,使用PDA抽样清点,验证确实出库的信息。
·实时信息:物流储放动态可以透过查询掌握。
·回报机制:业务订单及出货指令执行完毕,会自动回复提醒完工(这部分尚需大亚提供其它要回报的项目,目前已知只有一项)
·先进先出:出货原则可以整批发货+先进先出,减少呆滞残板。
&&& &永卓欣科技的电子仓库管理系统,简称WMS系统,英文名Warehouse Management System,是应用条码和RFID自动识别技术的现代化仓库管理系统,能有效地对仓库流程和空间进行管理,实现批次管理、快速出入库和动态盘点。并快速帮助企业的物流管理人员对库存物品的入库、出库、移动、盘点、配料等操作进行全面的控制和管理,有效的利用仓库存储空间,提高仓库的仓储能力。
系统可以达到的效益:
·库存的正确性: 改善入出库管理,简化并确保入出库正确性。
·一箱一码,完全掌握每一箱的动态。
·出入库明细数据可以确实正确、栈板存取,减少刷条形码的作业,省时省力。
·增加仓库空间利用率:
仓库采用虚拟储位弹性处理原则,容积效率可以提升,仓库空间可以有效利用,产能或库存加大时,无需扩建仓库。
·盘点作业简化:
一箱一码,栈板整合,盘点效率提升十倍以上。
·标签破损容错:
标签因破损或掉落造成不全,本系统有一定的容错能力,很容易补标或取得完整数据。
·仓库管理 :支持多仓库多区域,按照区位划分来实现仓库空间的充分利用;
·入库管理:入库管理建立与ERP采购计划和到货计划的接口,从物料入库到入库检验和上架进行严格的流程控制。采用自动识别技术加快入库操作,并可根据既定的规则对物料的存放地点(库位)进行指定,做到物料的有序存放,并实现准确的批次管理;<
·出库管理:出库操作根据出库计划指定出库物品的具体位置和数量,采用扫描出库方式提高出库速度和准确度,避免人工操作的失误。针对制造企业和物流企业,出库操作分别设定了不同的出库类型和模式;
·移库管理:支持仓库内和仓库间的移库操作;
·动态盘点:仓库盘点使用手持终端进行实时的批处理操作,盘点速度快,准确度高。支持动态盘点,盘点过程不影响正常的出入库操作,为连续运行的仓库提供准确的动态盘点管理;
·包装管理:提供产品内外包装管理功能,通过设置系统直接生成内外包装条形码,员工可使用扫描设备直接扫描出库;
·统计分析:提供库存周转分析、仓库利用分析等功能,并可对滞留货品进行报警提示;
·查询报表:库存进出电子料帐卡、库存状态表、库存分仓明细表、库存抽盘与全盘点差异统计表、库存进出日报表、库存理货登记表、库存料帐追踪查询、生产实时状态表;
·库存进出报表:库存进出电子料帐卡、库存状态表、库存分仓明细表、库存抽盘与全盘点差异统计表、库存进出日报表、库存理货登记表、库存料帐追踪查询、生产实时状态表、出货单、验收入库单、领料单、(进销存相关报表待讨论)。语言:英文|简体中文
二维码条码扫描器下载介绍:
使用Barcode Scanner对产品条形码扫描,可以查找出价格和评论。您还可以扫描数据矩阵和QR码包含网址,联系方式等。
版本:V4.6.3
大小:747 KB
系统要求:安卓4.0以上系统
适用屏幕像素:通用
应用包名:com.google.zxing.client.android
适用机型:

我要回帖

更多关于 会计证条形码 二维码 的文章

 

随机推荐