美文网首页
iOS openCV爬坑史

iOS openCV爬坑史

作者: HotRay | 来源:发表于2017-05-23 16:08 被阅读0次

以前从没有接触过这块,经过一段艰难的爬坑,自己还是理解了一下东西,在这里跟同学们分享下,希望对你有帮助!
1.openCV配置的话,自己百度吧,这里不说了!
2.首先我们来看openCV!我认为这个openCV是个非常牛逼的东西,还特意的买了一本书,看了看,就丢一边去了,最后送给英雄去了。。(宝刀配英雄嘛,还是个女英雄)。GPUimage,大家都知道吧,这个直播就做过写,但是openCV完全不一样,一个是面向对象,一个面向过程的。openCV各种跨平台,其中我最郁闷的就是在Xcode里面我不知道我自己用的是C还是C++的东西。!openCV的各种蛋疼我就不BB了。(最后总结了下,openCV是做底层的人玩的。还要一定的图像专业知识)。

openCV常见的数据类型有
Mat;(这个是C语言的);
CV::mat(是C++的,还说什么自动释放内存,坑的我不行);

IplImage(这个类型,先说下这个类型在iOS上咋弄);
直接贴代码。。
创建 cvCreateImage(cvsizi,字节位数,几个通道);
iplimage->imageData,//位图数据
iplimage->width,//宽度
iplimage->height,//长度
iplimage->depth,//深度
iplimage->nChannels,//通道
iplimage->widthStep,// bitmap的每一行在内存所占的比特数.
iplimage->channelSeq);//模式
这样的你可以看到openCVimage是一个什么样的数据。。!

在iOSCoregraohics框架下 有
CGContextRef contextRef = CGBitmapContextCreate(iplimage->imageData,//位图数据源
iplimage->width,
iplimage->height,
iplimage->depth,//深度
iplimage->widthStep,
colorSpace,//颜色
kCGImageAlphaNoneSkipLast|kCGBitmapByteOrderDefault);//第一个参数根据UIimage确定,打印
// 画一个UIimage。
//CGContextDrawImage(<#CGContextRef _Nullable c#>, <#CGRect rect#>, <#CGImageRef _Nullable image#>)
CGContextDrawImage(contextRef, //画的地方在哪里,上下文
CGRectMake(0, 0, image.size.width, image.size.height),//画的大小在哪里
imageRef);//画那个图片
CGContextRelease(contextRef);
CGColorSpaceRelease(colorSpace);
函数解释
// CGBitmapContextCreate(
// <#void * _Nullable data#>,指向要渲染的绘制内存的地址。这个内存块的大小至少(bytesPerRow*height)个字节
// <#size_t width#>bitmap的宽度,单位为像素
// <#size_t height#>,bitmap的高度,单位为像素
// <#size_t bitsPerComponent#>,内存中像素的每个组件的位数.例如,对于32位像素格式和RGB 颜色空间,你应该将这个值设为8.
// <#size_t bytesPerRow#>, bitmap的每一行在内存所占的比特数
// <#CGColorSpaceRef _Nullable space#>, bitmap上下文使用的颜色空间
// <#uint32_t bitmapInfo#>);指定bitmap是否包含alpha通道,像素中alpha通道的相对位置,像素组件是整形还是浮点型等信息的字符串

通过nsdata创建一个图片
//自己的操作后数据
NSData *dataprovider = [NSData dataWithBytes:data length:imah->imageSize];

//转化为数据提供者
CGDataProviderCreateWithCFData((CFDataRef)dataprovider);
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)dataprovider);
CGImageRef rdf = CGImageCreate(
                               imah->width,//图片的宽度
                               imah->height,//图片的高度
                               imah->depth,//图片的深度
                               imah->depth * imah->nChannels,//每个像素的总比特数= 深度*通道数
                               imah->widthStep,//这个我也不明白,每一行占用的字节数,注意这里的单位是字节
                               colorSpace,//颜色 ,自定定义要与上匹配
                               kCGImageAlphaNoneSkipLast | kCGImageAlphaPremultipliedLast,//这个更加不明白,这个很重要 要跟图片匹配的,位图像素布局,这是个枚举 !
                               provider,//数据源提供者,自己创建!
                               NULL,//解码渲染数组 
                               false,//不要邻角,是否抗锯齿
                               kCGRenderingIntentDefault);//图片相关参数,默认显示(这个)
UIImage *image = [UIImage imageWithCGImage:rdf];
CGImageRelease(rdf);
CGDataProviderRelease(provider);
CGColorSpaceRelease(colorSpace);

return image;

突然发现如果要写的话太多了。。!写不完,有空在写把。。!

相关文章

  • iOS openCV爬坑史

    以前从没有接触过这块,经过一段艰难的爬坑,自己还是理解了一下东西,在这里跟同学们分享下,希望对你有帮助!1.ope...

  • iOS集成OpenCV

    iOS项目集成OpenCV及踩过的坑 一、直接下载Framework集成 1.1、下载OpenCV的Framewo...

  • iOS 之仿微信添加地址(腾讯地图爬坑)

    iOS 之仿微信添加地址(腾讯地图爬坑)

  • iOS OpenCV 图像灰度处理

    iOS OpenCV 图像灰度处理 iOS OpenCV 图像灰度处理

  • Ubuntu基于Anaconda python3.5安装open

    Python3.5.2是我长期使用的python稳定版,最近需要折腾opencv+contrib,把爬坑的步骤记下...

  • iOS OpenCV踩坑

    警告:按照提示说明,OpenCV的头文件应该在所有APPLE的头文件之前导入,不然会抛出异常,把OpenCV的头文...

  • iOS +OpenCV (一)

    一、下载OpenCV 的 ios-framework,我用了opencv-3.2.0-ios-framework版...

  • PGC视频爬坑史

    由来 接手PGC视频,类似于接手一个新项目,对很多东西不了解,这时候开始追忆,导师让我看之前视频的东西时,没有静下...

  • iOS 共享到Mail邮件

    iOS 共享爬坑记 坑 神坑 特别坑 利用系统的Mail邮件发送,刚开始收不到,还以为是我的代码有问题,检查了几遍...

  • iOS爬坑记

    今天参加了某公司的面试,答得感觉懵逼的,下面是面试题 1.@import跟#include的区别 (1)#impo...

网友评论

      本文标题:iOS openCV爬坑史

      本文链接:https://www.haomeiwen.com/subject/ktxlbttx.html