博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenCV For iOS 2: 获取视频并显示轮廓Capture Video
阅读量:4122 次
发布时间:2019-05-25

本文共 1382 字,大约阅读时间需要 4 分钟。

在上一篇文章中,我们实现了OpenCV的连接,在本文中,我们要使用iOS自带的摄像头来获取视频,并且对视频进行边缘检测。

不废话,直接上解决之道:使用openCV封装好的CvVideoCamera来实现

Step 1:添加import

#import <opencv2/videoio/cap_ios.h>

Step 2:导入一下有用的framework

Step 3:

添加protocol <CvVideoCameraDelegate>

这个delegate可以用来出来获取的视频图像

Step 4:创建一个CvVideoCamera的实例

@property (nonatomic,strong) CvVideoCamera *videoCamera;

Step 5:将videoCamera对象与imageView连接:

 self.videoCamera = [[CvVideoCamera alloc] initWithParentView:self.imageView];

    self.videoCamera.delegate = self;

    self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;

    self.videoCamera.defaultAVCaptureSessionPreset = AVCaptureSessionPreset640x480;

    self.videoCamera.defaultFPS = 30;

只要简单的设置,现在videoCamera已经就绪了,只需要以下命令:

[self.videoCamera start];

[self.videoCamera stop];

进行控制

Step 6:对获取的实时图像进行处理

利用protocol的method:

- (void)processImage:(cv::Mat &)image

{

        cv::Mat gray;

        // Convert the image to grayscale;

        cv::cvtColor(image, gray, CV_RGBA2GRAY);

        // Apply Gaussian filter to remove small edges

        cv::GaussianBlur(gray, gray, cv::Size(5,5), 1.2,1.2);

        // Calculate edges with Canny

        cv::Mat edges;

        cv::Canny(gray, edges, 0, edgeValue);

        // Fill image with white color

        image.setTo(cv::Scalar::all(255));

        // Change color on edges

        image.setTo(cv::Scalar(0,128,255,255),edges);

        // Convert cv::Mat to UIImage* and show the resulting image

        self.imageView.image = MatToUIImage(image);

    

}

OK啦,这样我们就可以对实时的视频做边缘检测了:

你可能感兴趣的文章
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
Vue项目中使用img图片和background背景图的使用方法
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
关于无线PCB中 中50欧姆的特性阻抗的注意事项
查看>>
Spring的单例模式源码小窥
查看>>
后台服务的变慢排查思路(轻量级应用服务器中测试)
查看>>