OpenCV with iOS

OpenCV 是一种开源跨平台计算机视觉库,采用C/C++ 语言编写, 提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉的多种通用算法。致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升。

应用领域在多个领域:监控,网络图像和视频,航空和街道图像(图像拼接),无人飞行器,安全监控,生物医学分析等
使用了 图像处理,图像分割,人机互动,物体识别,运动跟踪,动作识别,机器视觉等技术手段。

计算机视觉

计算机视觉是将静止的图片或视频的数据转换成一种新的表达方式或者决策的过程。(它能识别出一张照片上的人脸数,一张照片的灰度图)信息都是由数据构成,人们主观的视觉反馈对应到计算机中则是非常复杂的过程。

视觉的影响因素在真实世界中是非常多的(天气,光线,反射,运动等等),所以给出一组数据信息很难被重建场景。角度不同,结果数据也是千差万别。想想一张照片的几千*几千像素的照片,每个像素点都是RGBA的数据组合。

iOS 图像处理实践

主要在涉及到图像处理,我们有许多的专业图像处理算法需要使用和翻译到不同平台,所以进行 iOS端的学习和集成。

图像增强 就是所谓的对应图片进行处理,可以调节亮度,饱和度,对比度,降噪,去雾,锐化,增强清晰度,减少噪点等。

IplImage是OpenCV中C语言的图像类型;
cv::Mat是OpenCV中C++语言的图像类型; 可以理解Mat派生出IplImage, 而 Mat则是一个矩阵结构,用于表达图像信息。 

矩阵操作是我们必须掌握和了解的,处理原理是进行矩阵运算而成。OpenCV 提供了一系列处理接口,不需要我们进行底层计算,但是一般我们使用openGL 进行着色器编写是需要实现一些转换。

OpenCV:
//灰度处理 
cvtColor(mat, grayMat, CV_BGR2GRAY);
//反色处理
 cvtColor(src, dst, COLOR_BGR2Lab);
 
openGL 着色器:
//灰度处理 
float gray   =  dot(vec3(texture2D(image,v_texcoord)),vec3(0.299,0.587,0.114));
gl_FragColor = vec4(gray,gray,gray,1.0);
//反色处理 
gl_FragColor = vec4(vec3(1.0-texture2D(image, v_texcoord)),1.0);

秉承使用高级接口的口号,我们只需要使用现成的接口进行处理即可。图像处理的方法、原理,会持续学习更新。

我的Demo地址

参考
OpenCV 中文站

OpenCV官方文档-CN

你可能感兴趣的:(OpenCV with iOS)