OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
今天配置了xcode中的opencv,网上看了很多的教程,觉得自己还是配置一下遇到了不少问题
配置环境 xcode6.0
1.下载opencv2.framework包。
2.将opecv拖入到工程中。
3.引入头文件
#import <opencv2/highgui/cap_ios.h>
#import <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/imgproc.hpp>
之前做的时候只是引入第一个就可以了,
本例子中是将摄像头打开后将图像黑白画显示在手机上,所以要建立一个UIImageView 和一个Button
下面是.h文件
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
- (IBAction)didClickCreamButton:(id)sender;
@end
下面是.m文件
#import "ViewController.h"
#import <opencv2/highgui/cap_ios.h>
#import <opencv2/imgproc/imgproc_c.h>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
@interface ViewController ()<CvVideoCameraDelegate>
{
}
@property (nonatomic,retain)CvVideoCamera *videoCamera;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.videoCamera = [[CvVideoCamera alloc] initWithParentView:_imageView];
self.videoCamera.delegate = self;
self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionFront;
self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset352x288;
self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;
self.videoCamera.defaultFPS = 30;
self.videoCamera.grayscaleMode = NO;
// Do any additional setup after loading the view, typically from a nib.
}
- (void)processImage:(cv::Mat &)image
{
// Do some OpenCV stuff with the image
Mat image_copy;
cvtColor(image, image_copy, CV_BGRA2BGR);
// invert image
bitwise_not(image_copy, image_copy);
cvtColor(image_copy, image, CV_BGR2BGRA);
// h ttp://stackoverflow.com/questions/16032845/opencv2-cvtcolor-does-not-work
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)didClickCreamButton:(id)sender {
[self.videoCamera start];
}
@end
还要加入类文件
这时候配置就结束了 现在运行一下就可以看到图像了
这样出现说明你配置成功了。
在做的过程中由于opencv是基于C++的在最好把.m文件改为.mm
之前做过一次 我只是引入了
#import <opencv2/highgui/cap_ios.h>
可以后来必须引入后面的才行后面两个是processImage中要用到的。
这个是遇到问题的找到的解决方法:
http://stackoverflow.com/questions/16032845/opencv2-cvtcolor-does-not-work
Demo下载地址:https://github.com/thinkma/openCV.git