cpu扫描金属上面的二维码码可以扫吗

二维码的生成与扫描(原生) - 简书
二维码的生成与扫描(原生)
在iOS7以后,AVFoundation中就添加了QR Code部分,QR是指Quick Response 。
首先,要引入
#import &AVFoundation/AVFoundation.h&
创建两个对象
//捕捉会话
@property (nonatomic, strong) AVCaptureSession *captureS
//展示layer
@property (nonatomic, strong) AVCaptureVideoPreviewLayer *videoPreviewL
记得,在viewDidLoad中将captureSession开始设置为nil。
现在开始扫描的主体部分
- (BOOL)startReading {
//初始化捕捉设备(AVCaptureDevice),类型为AVMediaTypeVideo,该类型可以快速使用设备的摄像头部分
AVCaptureDevice *captureDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
//用captureDevice创建输入流
AVCaptureDeviceInput *input = [AVCaptureDeviceInput deviceInputWithDevice:captureDevice error:&error];
if (!input) {
NSLog(@"%@", [error localizedDescription]);
return NO;
//创建媒体数据输出流
AVCaptureMetadataOutput *captureMetadataOutput = [[AVCaptureMetadataOutput alloc] init];
//实例化捕捉会话
_captureSession = [[AVCaptureSession alloc] init];
//将输入流添加到会话
[_captureSession addInput:input];
//将媒体输出流添加到会话中
[_captureSession addOutput:captureMetadataOutput];
//创建串行队列,并加媒体输出流添加到队列当中
dispatch_queue_t dispatchQ
dispatchQueue = dispatch_queue_create("myQueue", NULL);
//设置代理
[captureMetadataOutput setMetadataObjectsDelegate:self queue:dispatchQueue];
//设置输出媒体数据类型为QRCode
[captureMetadataOutput setMetadataObjectTypes:[NSArray arrayWithObject:AVMetadataObjectTypeQRCode]];
//实例化预览图层
_videoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession];
//设置预览图层填充方式
[_videoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
//设置图层的frame
[_videoPreviewLayer setFrame:_viewPreview.layer.bounds];
//将图层添加到预览view的图层上
[_viewPreview.layer addSublayer:_videoPreviewLayer];
//设置扫描范围
captureMetadataOutput.rectOfInterest = CGRectMake(0.2f, 0.2f, 0.8f, 0.8f);
_boxView = [[UIView alloc] initWithFrame:CGRectMake(_viewPreview.bounds.size.width * 0.2f, _viewPreview.bounds.size.height * 0.2f, _viewPreview.bounds.size.width - _viewPreview.bounds.size.width * 0.4f, _viewPreview.bounds.size.height - _viewPreview.bounds.size.height * 0.4f)];
_boxView.layer.borderColor = [UIColor greenColor].CGC
_boxView.layer.borderWidth = 1.0f;
[_viewPreview addSubview:_boxView];
_scanLayer = [[CALayer alloc] init];
_scanLayer.frame = CGRectMake(0, 0, _boxView.bounds.size.width, 1);
_scanLayer.backgroundColor = [UIColor blueColor].CGC
[_boxView.layer addSublayer:_scanLayer];
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(moveScanLayer:) userInfo:nil repeats:YES];
[timer fire];
//开始扫描
[_captureSession startRunning];
return YES;
关于扫描框和扫描线,这些其实是可以去掉的,设置扫描范围后只要二维码进入到范围内就可以获取到相应的信息。所以这一块可以根据自己的喜好进行设置,扫描线只要设置一个定时器然后让线不断上下移动就行了。
[_captureSession stopRunning];
_captureSession =
[_scanLayer removeFromSuperlayer];
[_videoPreviewLayer removeFromSuperlayer];
扫描二维码后进入相应的方法
- (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]) {
//对获取信息进行处理
这样就实现了二维码扫描的功能
再就是关于二维码的生成
首先创建一个UIImageVIew对象
@property (weak, nonatomic) IBOutlet UIImageView *
生成二维码,我这里是默认将字符串设置了生成二维码
//生成二维码
- (UIImage *)generateQRCode:(NSString *)str width:(CGFloat)width height:(CGFloat)height {
// 生成二维码图片
CIImage *qrcodeI
NSData *data = [str dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:false];
CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
[filter setValue:data forKey:@"inputMessage"];
[filter setValue:@"H" forKey:@"inputCorrectionLevel"];
qrcodeImage = [filter outputImage];
// 消除模糊
CGFloat scaleX = width / qrcodeImage.extent.size. // extent 返回图片的frame
CGFloat scaleY = height / qrcodeImage.extent.size.
CIImage *transformedImage = [qrcodeImage imageByApplyingTransform:CGAffineTransformScale(CGAffineTransformIdentity, scaleX, scaleY)];
return [UIImage imageWithCIImage:transformedImage];
最后将返回的图片显示到相应的位置就可以了
又菜又爱......
X399平台点睛之笔ZENITHEXTREME引爆性能狂潮 近期,X399平台的顶级性能浮出水面,各家媒体的全方位测试犹如一支强心剂,让PC玩家大呼过瘾。我们惊喜地发现,国内外各大科技媒体一致选用了ROGZENITH EXTREME这款主板。它是华硕目前最顶级的X399芯片...
iOS开发中经常要用到生成二维码与扫描二维码的功能,iOS7开始,系统支持原生的扫描二维码,iOS7 扫描二维码可以,但从相册照片读取二维码苹果不支持,必须是iOS8+。在 iOS7 以前,在iOS中实现二维码和条形码扫描,我们所知的有,两大开源组件ZBar与ZXing,这...
关于二维码(或者条形码,以下归类简称二维码)扫描和生成的,我相信网络上相关的文章层数不穷,但是,大部分都是直接粘贴上代码,不去解释,这样导致每次遇到诸如此类的功能行的问题,简单方便的CV工程师程序,久而久之,对于程序开发更局限于表面,开发这条道路也会越来越局限了.好了,言归...
二维码生成 借助了Core Image框架中的CIFilter对象 创建name为CIQRCodeGenerator的滤波器. 然后设置特定的参数, 获得其输出图片为CIImage 对象. 通过向UIImage 转换从而获得二维码图片. 关键性代码如下: 这里的变量 dat...
作者:Simon Ng,原文链接,原文日期:译者:小锅;校对:saitjr;定稿:CMB 那么,什么是二维码呢?我相信读者中的大多数都知道什么是二维码(译者注:我觉得应该是全部都知道吧)。以防还有读者没有听说过二维码,可以看一下上面这张图片(译者注:原文...
无题诗《数数杏仁》是德语诗人保尔﹒策兰写给他母亲的,他母亲常烤带杏仁的蛋糕。此处引用的版本是诗人北岛翻译的,也是他的《时间的玫瑰》里介绍的诗作中,我最喜欢的一首。 数数杏仁, 数数苦的让你醒着的, 把我也数进去 我寻找你的眼睛,你睁开无人看你, 我纺那秘密的线 你...
任何一位父母,总有一天会意识到:“我的孩子已经不再是一个孩子了。”这是一个独特的时刻,我们会即欣喜又担心。欣喜的是,孩子终于长大了;担心的是,他们是否可以独立面对这个世界,是否可以面对不可预知的种种挑战。最主要的一点是,当孩子不再是孩子的时候,家长和孩子之间就会产生一种冲突...
编码的奥义 和 深入理解计算机系统 哥德尔 埃舍尔 巴赫 集异璧之大成 和 计算机程序的构造和解释 月亮与六便士 和 刀锋 黑客 计算机革命的英雄 和 阿桑奇自传 历史深处的忧虑 和 美国精神的封闭 那些忧伤的年轻人 和 少年维特的烦恼
青春里,少不了友谊,更少不了悸动情愫。 年少的你该如何选择和行动呢? 在这周日的下午,打开《春风十里不如你》视频观看。其中原因之一是冲着张一山去看的,确实看到成年版的“刘星”影子,但却多些成熟的魅力。另外一个原因是,该片宣传新闻稿中提到这部青春片躲过分手、出轨、堕胎、车祸等...
就算飞得再累,也要证明自己…… 你不必飞在别人的乌云下, 你有属于自己的阳光。 因为在那片乌云下, 不管你多么努力地挣脱, 终会被卷入暴风雨。 而在自己的阳光下, 也许只有一缕, 也许你会飞得很累。 但至少, 前方不是黑漆漆的一片, 至少, 你不会被风吹乱了方向。 飞,在天...&&不知道从什么时候开始,我们的生活突然之间就充满了二维码。看网页要二维码,加好友要二维码,现在就连楼下卖水果的大爷付款也要扫二维码。&&那么大家有没有想过,这个长得奇怪的东西,到底是怎么来的呢?二维码到底是什么原理?今天小编就给大家科普一下。&&我们在介绍二维码原理之前,给大家说下条形码,也就是超市收银员结账的时候扫的那个东西。电脑在水平方向上识别粗细不均的黑白条,就能找出藏在里面的商品编号信息,比如价格,商品名称。相比于条形码只在一个纬度上工作的原理,二维码在水平和垂直两个纬度上都携带了信息,也就是做成了这个方块状的东西。条形码和二维码这对好基友,说白了其实就是给数字和母还有符号这类的信息换了一身衣服,把他们打扮成了能给电脑识别的黑白条和方块。&&那么最关键的问题来了,这种方块是怎么变成能被电脑识别的图案的呢?这就要提到一个人类具有划时代的发明了,那就是二进制。我们平时使用的数字和字母还有汉字等各种字符,虽然画风完全不同,但是机智的人类发明了一种方法,使他们都能被统一转变为0和1组成的二进制数字序列,这个转化的过程叫做编码。&&国际上有几套通用的编码规则。我们今天就用一个例子给大家感受下,编码是怎么回事。比如AB,这个由两个英文字母组成的字符。根据编码规则,每一个独立的英文字母都有一个唯一的十进制数字与之对应,而想AB这样的字符串,则要在对应数字的基础上在做运算,而运算结果在转化成二进制,就是一串数字。对了,在整个计算机和物联网文明都是建立在这种二进制编码上的。你在看的视频,在你的手机上只是一串0和1而已。&&我们回到二维码的生成原理上,字符在变成只有0和1组成的数字序列后,在进行一系列优化算法后,就得到了最终的二进制编码。在最后这串编码中,一个0对应的就是一个白色小方块,一个1对应的就是一个黑色的小方块。我们把这些小方块按照8个一组,填进大方块里,这就是一个完整的,可以被手机相机识别的二维码图案了。&&对了,不知道大家注意到没有,为什么所有的二维码,都有三个小方块在边上?其实这个三个一模一样的小方块是用来给手机相机定位的,这样不管你的二维码是正的扫还是倒着左右扫,都能被手机相机识别,并且扫出来的结果都一样。
产品定位 屏幕尺寸
投诉欺诈商家:
天津重庆哈尔滨沈阳长春石家庄呼和浩特西安太原兰州乌鲁木齐成都昆明贵阳长沙武汉郑州济南青岛烟台合肥南京杭州东莞南宁南昌福州厦门深圳温州佛山宁波泉州惠州银川
10暂无报价
摄影手机硬件笔电平板
最新科技资讯下载ZOL APP主题 : Zing二维码扫描,CPU占用达到90%以上
级别: 骑士
UID: 207587
可可豆: 1026 CB
威望: 787 点
在线时间: 659(时)
发自: Web Page
Zing二维码扫描,CPU占用达到90%以上&&&
我使用Zing二维码扫描,CPU占用达到90%以上,而内存占用却只有4-5M,这是什么问题呢?我的代码如下:self.capture = [[ZXCapture alloc] init]; & & self.capture.rotation = <span style="color:#f;
& & // Use the back camera
& & self.capture.camera = self.capture.back;
& & self.capture.layer.frame = CGRectMake(10, <span style="color:#, <span style="color:#, <span style="color:#);
& & [self.view.layer addSublayer:self.capture.layer];- (void)viewWillAppear:(BOOL)animated
{
& & [super viewWillAppear:animated];
& & self.capture.delegate = self;
}在viewWillDisappear里面设置self.capture.delegate&=&nil;在6上面会崩溃,在7下面不会崩溃,但是CPU都会达到90%以上,代码就这些,蛋我发现self.capture.delegate&=&self;设置了代理之后CPU就达到90%以上,不设置代理CPU却没有问题,但是也是不能实现扫描功能的,我感觉是这个Zxing类库的问题呢?大家有没有遇到此问题呢?有什么好的解决办法?O(∩_∩)O谢谢
级别: 新手上路
可可豆: 10 CB
威望: 10 点
在线时间: 49(时)
发自: Web Page
级别: 骑士
UID: 207587
可可豆: 1026 CB
威望: 787 点
在线时间: 659(时)
发自: Web Page
恩, 是的哈
级别: 新手上路
UID: 375049
可可豆: 56 CB
威望: 48 点
在线时间: 12(时)
发自: Web Page
楼主的问题解决了吗?能分享一下解决方案吗
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版参 数指标介绍CPUCortex-A9四核处理器设备接口类型RS232或者USB2.0识读码制一维条码:Code39,Code128, EAN-8,EAN-13二维条码:QR Code等影像传感器CMOS Sensor(800×600)扫码提示蜂鸣器提示音抗抖动性125px/s旋转角度敏感度360°全方位扫描倾斜灵敏度±10°识读景深0mm5mm环境光0100 000 lux(全日光)照明LED红光,亮度自动调节外形尺寸长96mm×宽76mm×高80mm取景窗尺寸长68mm×宽50mm电源输入DC 5V/1.5A适配器,或者USB取电(只针对USB接口版本)工作环境温度:℃&湿度:(无冷凝)储存环境温度:2
地址:浙江省杭州市西湖区西斗门路3号天堂软件园E幢6-7楼 TEL:6 FAX:6-8007
浙江深大智能科技 版权所有 全国服务热线: 浙ICP备号 COPYRIGHT (C) 1996-, SENDINFO.INC}

我要回帖

更多关于 微信扫过的二维码记录 的文章

更多推荐

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

点击添加站长微信