OpenCV3 -跨平台+相机处理
来源:互联网 发布:淘宝网女式绣花长旗袍 编辑:程序博客网 时间:2024/06/06 01:29
什么是OpenCV
http://baike.baidu.com/link?url=9No0mr9XSltLqwGaQ_h50caVqYbIsUMDfevlxtW9VdwMxHHRTmy5Yvat6Eig3bP8mGu7_taKeRHjsmDTg90RGa
2016年12月23日,发布最新版本:OpenCV 3.2版(合并969个修补程序,关闭478个问题)(OpenCV3)
应用领域除了当前所流行的VR、AR还包括:
-1、人机互动
-2、物体识别
-3、图像分割
-4、人脸识别
-5、动作识别
-6、运动跟踪
-7、机器人
-8、运动分析
-9、机器视觉
-10、结构分析
-11、汽车安全驾驶
下载地址 英文:http://opencv.org/
下载地址 中文:http://www.opencv.org.cn/
目前中文网只支持到OpenCV2.0版本,英文网已经支持到3.2版本
如何使用OpenCV开发包?入门案例(体验案例)
后面在系统学习
案例:相机处理(灰度相机、彩色相机)
实现?
第一步:导入开发包第二步:实现相机处理(使用开发包)
注意:在使用开发包的时候,需要注意,使用开发包的.m文件必须要支持C++代码(文件后缀名改成.mm),因为OpenCV采用了C++开发
当我们导入框架的时候,会编译报错,如何解决?
解决方案:
修改文件:exposure_compensate.hpp原来的代码:enum { NO, GAIN, GAIN_BLOCKS};修改后代码:enum { CNO, GAIN,GAIN_BLOCKS };
修改文件:blenders.hpp原来的代码:enum { NO, GAIN, GAIN_BLOCKS};修改后代码:enum { CNO, GAIN,GAIN_BLOCKS };
注意:相机的权限
后面会系统学习,体验一下
代码奉上:
#import "ViewController.h"//使用OpenCV开发框架//将ViewController.m文件改成ViewController.mm后缀名//实现第一步:导入开发包//学习方法?怎么办?//答案:看文档#import <opencv2/opencv.hpp>//第二步:导入视频库同时导入命名空间#import <opencv2/videoio/cap_ios.h>using namespace cv;//CvVideoCameraDelegate:类似于Java中实现接口@interface ViewController ()<CvVideoCameraDelegate>//相机显示预览视图@property (weak, nonatomic) IBOutlet UIImageView *imageView;//相机(OpenCV视频处理框架类,相机、视频都能够进行处理)@property (nonatomic, retain) CvVideoCamera* videoCamera;//是否是灰度相机@property BOOL isGray;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; //第三步:初始化相机 //initWithParentView:指定相机预览画面 //self和this一个意思:值得当前意思 self.videoCamera = [[CvVideoCamera alloc] initWithParentView:_imageView]; //指定相机摄像头(后置摄像头、前置摄像头) //AVCaptureDevicePositionFront:前置摄像头 //AVCaptureDevicePositionBack:后置摄像头 self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront; //设置相机方向 //AVCaptureVideoOrientationPortrait:竖屏显示相机预览画面// self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;// self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;// self.videoCamera.defaultFPS = 30;// self.videoCamera.grayscaleMode = NO; //第四步:使用OpenCV需要导入系统库 //第五步:处理每一帧数据 //首先添加帧回调监听(添加delegate) //当我们在预览相机的时候,会实时回调预览delegate,然后客户端可以进行帧处理(图像处理) self.videoCamera.delegate = self; }//彩色相机- (IBAction)clickColor:(id)sender { self.isGray = NO; //需要注意: //第六步:开始预览 [self.videoCamera start];}//灰度相机- (IBAction)clickGray:(id)sender { self.isGray = YES;}//processImage:当我的相机在预览的时候,或者说我们的视频在播放的时候,实时调用该方法//灰度处理,彩色切换- (void)processImage:(Mat&)image{ if (self.isGray){ // Do some OpenCV stuff with the image //将彩色图片转成灰度图片 //矩阵:是一种数据结构(可以简单的理解为图片数据) Mat image_copy; //参数一:原始图片(彩色图片) //参数二:灰度图片 //参数三:转换类型(COLOR_BGR2GRAY:转成灰度) //将RGB->GRAY cvtColor(image, image_copy, COLOR_BGR2GRAY); //图片反转 //bitwise_not作用:会将弧度图片的白色区域变成黑色,黑色区域变成白色 // bitwise_not(image_copy, image_copy); //Convert BGR to BGRA (three channel to four channel) // Mat bgr; // //我们的图片是3原色(3个通道)转成4个通道 // 转换过程:Gray->RGB->ARGB // cvtColor(image_copy, bgr, COLOR_GRAY2BGR); //原来是:RGB->ARGB // cvtColor(bgr, image, COLOR_BGR2BGRA); //从新给我们的原始图片设置数据 //将我们修改后的帧画面,显示到预览画面 //保持三个管道 //先转换 //将GRAY->RGB显示 cvtColor(image_copy, image, COLOR_GRAY2BGR); } }- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];}@end
Demo
阅读全文
0 0
- OpenCV3 -跨平台+相机处理
- opencv3 鱼眼相机标定
- OpenCV3图像形态学处理
- Linux平台安装opencv3.1.0
- android 相机,图片处理
- opencv3的图像模糊处理
- 【OpenCV3图像处理】图像修复
- 【OpenCV3图像处理】图像分割
- OpenCV3.1.0的calibrateCamera()函数计算相机内参数
- OpenCV3.1.0鱼眼相机标定及畸变校正
- 《OpenCV》Part9 OpenCV3.1.0 拟合视频/相机获取的光斑
- 用python3 opencv3 实现相机学生证的实时跟踪
- 【OpenCV3学习笔记 】相机标定函数 calibrateCamera( ) 使用详解(附相机标定程序和数据)
- python处理跨平台应用
- win7平台下vs2013配置opencv3.0
- win7平台下vs2013配置opencv3.0
- Ubuntu14.04(AMD64)平台编译,安装openCV3
- Windows平台下OpenCV3源码编译(VS2013)
- A 控制器 Push 到 B 控制器 presentViewController(modal模态)到C控制器
- Game
- 【心励路程】----计划与执行力
- Python数据分析学习笔记(一)
- Java四种线程池的使用
- OpenCV3 -跨平台+相机处理
- iOS框架集合:
- iOS里面Objective-C(OC)方法的懒加载
- iOS平台 HEAL 1.1.0 版本 震撼上线 邀你前来体验
- java实现ArrayList顺序表
- Activity的四种启动模式
- 关于mysql5.7中创建用户无法登录及grant操作无效问题的处理
- JDK源码-Collection-toString()
- |1164|C语言实验——矩阵转置