文档章节

扫描图片像素

古乙丁三雨
 古乙丁三雨
发布于 2015/02/26 18:52
字数 170
阅读 19
收藏 0
点赞 0
评论 0
    NSUInteger width = img.size.width;
    NSUInteger height = img.size.height;
    NSUInteger bytesPerPixel = 4;
    NSUInteger bytesPerRow = width * bytesPerPixel;
//    NSUInteger bytesPerColumn = height * bytesPerPixel;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef bmContext = CGBitmapContextCreate(NULL, width, height, 8, bytesPerRow,     colorSpace, kCGBitmapByteOrderDefault | kCGImageAlphaPremultipliedFirst);
    CGColorSpaceRelease(colorSpace);
    CGContextDrawImage(bmContext, (CGRect){.origin.x = 0.0f, .origin.y = 0.0f, .size.width = width, .size.height = height}, img.CGImage);
    UInt8* data = (UInt8*)CGBitmapContextGetData(bmContext);
    const size_t bitmapByteCount = bytesPerRow * height;
    
    struct Color {
        UInt8 r;
        UInt8 g;
        UInt8 b;
    };
    for (size_t i = 0; i < bytesPerRow; i += 4) //shift 1 pixel
    {
        for (size_t j = 0; j < bitmapByteCount; j += bytesPerRow) //check every pixel in column
        {
            struct Color thisColor = {data[j + i + 1], data[j + i + 2], data[j + i + 3]};
            if (thisColor.r != 0)
            {
                NSString *areaPoint = NSStringFromCGPoint(CGPointMake(i/4, j/(width * bytesPerPixel)));
                [arrayPoint addObject:areaPoint];

//           NSLog(@"%zu %zu",i/4,j/(width * bytesPerPixel)); // point of area
            }
        }
    }
    CGContextRelease(bmContext);


© 著作权归作者所有

共有 人打赏支持
古乙丁三雨
粉丝 1
博文 54
码字总数 29746
作品 0
景德镇
程序员
[Android实例] 深入学习Bitmap-android的图片扫描

我这个实例是将一个位图用几秒钟扫描,然后得到它的反色图。做这个实例主要是想研究下Bitmap类和Color类,重点是getPixe和setPix的这两个方法的用法。 Java代码 1 publicclassSkanBitmapext...

android技术开发
2013/07/25
0
0
图片局部放大选中部分错位解决办法

情景如下: 在窗体上添加一个Picturebox用来加载图片,当鼠标在Picturebox移动时圈定一个矩形区域,并将矩形区域放大显示在Panel控件上。 问题: 已PictureBox作为坐标参考系,动态获得跟随鼠...

馨缘6009
2014/05/15
0
0
php获取图片RGB颜色值的例子

php获取图片RGB颜色值的例子 很多图片站点都会根据用户上传的图片检索出图片的主要颜色值,然后在通过颜色搜索相关的图片。 之前按照网上的方法将图片缩放(或者马赛克)然后遍历每个像素点,然...

mysoftsky
2014/07/29
0
0
opencv 2 computer vision application programming第二章翻译

第二章 操作像素 在本章,我们会讲述: 处理像素值 用指针扫描图像 用迭代器扫描图像 写高效的图像扫描循环 用相邻的方法扫描图像 展示简单的图像计算 定义感兴趣的区域 【概述】 为了建立计...

lovedan
2013/04/30
0
0
使用DeepLearning4j训练和保存模型

一、前言 最近一直在研究深度学习,联想起之前所学,感叹数学是一门朴素而神奇的科学。F=Gm1m2/r²万有引力描述了宇宙星河运转的规律,E=mc²描述了恒星发光的奥秘,V=H*d哈勃定律描述了宇宙...

孟飞阳
06/28
0
0
BP神经网络在车牌识别中的原理及应用

车牌识别流程图 l 图像预处理 l 为什么要进行图像预处理呢? 消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性和最大限度地简化数据,从而改进特征抽取、图像分割、匹配和...

best__bo__
01/25
0
0
OpenCV学习笔记 -模糊操作

高斯滤波就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。高斯滤波的具体操作是:用一个模板(或称卷积、掩模)扫描图像中的每一个像...

qq_36387683
05/13
0
0
OpenJudge 百练 2713: 肿瘤面积 解题报告

总时间限制: 1000ms 内存限制: 65536kB 描述 在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写...

圣洁之子
2016/06/15
176
0
JS写小游戏「跳一跳」外挂之Canvas图像识别

17年结尾的时候微信发布新版重点推出了「小游戏」概念,H5的游戏再次火了起来,新版微信开屏的游戏就是「跳一跳」游戏可玩度很高,网上也出现了各种语言版本的外挂,前几天看到一篇用nodejs搭...

a独家记忆
07/12
0
0
JS逐像素对比图片--IM.js

IM.js 是一个能够快速比较图片之间的不同之处的 JavaScript 类库,它使用 HTML5 canvas 逐像素扫描指定的图片,并输出结果,给出图片的相似率。IM.js可用于检测同一网站在不同浏览器中的快照...

匿名
2011/12/11
2.4K
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Git 2.18版本发布:支持Git协议v2,提升性能

Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要驱动力是使 Git 服务端能够对各种 ref(分支与 tag)进行过滤操作。 这就意味着,G...

linux-tao
13分钟前
0
0
python浏览器自动化测试库【2018/7/22-更新】

64位py2.7版本 更新 document_GetResources 枚举页面资源 document_GetresourceText 获取指定url的内容 包括页面图片 下载地址下载地址 密码:upr47x...

开飞色
30分钟前
21
0
关于DCL双重锁失效及解决方案

关于DCL双重锁失效及解决方案 Double Check Lock (DCL)实现单例 DCL 方式实现单例的优点是既能够在需要时才初始化单例,又能够保证线程安全,且单例对象初始化后调用getInstance方法不进行...

DannyCoder
35分钟前
0
0
PowerDesigner 16.5 安装配置

PowerDesigner16.5破解版是一款业内领先且开发人员常用的数据库建模工具,PowerDesigner可以从物理和概念两个层面设计数据库,方便用户制作处清晰直观的数据流程图和结构模型,欢迎有需要的朋...

Gibbons
今天
0
0
mac Homebrew 指令积累

1通用命令 brew install [包名] //安装包 brew list //列举安装的包 brew info [包名] // 显示安装包的详细信息 mysql 相关 #启动mysql 服务 brew service start mysql my...

Kenny100120
今天
0
0
前端Tips: 创建, 发布自己的 Vue UI 组件库

创建, 发布自己的 Vue UI 组件库 前言 在使用 Vue 进行日常开发时, 我们经常会用到一些开源的 UI 库, 如: Element-UI, Vuetify 等. 只需一行命令, 即可方便的将这些库引入我们当前的项目: n...

ssthouse_hust
今天
1
0
大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
今天
5
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
今天
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
今天
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部