[openCV]视频的读入与一些简单的图像处理

1.序言

作为一个计算机图像处理的工具,因为免费公开呀,版权等等的原因,openCV开始展现出一些无可取代的优势(已经展露好久了好吧)。嘛,之前我研究生阶段,一直再用MATLAB在干活,总感觉调试呀,验证啊,还是MATLAB要好用一些呢!不久前,自己也开始接触了openCV,总感觉虽然都是工具,但是水很深的样子。嘛,总是还是开个关于openCV的坑,记录下自己的学习的轨迹吧。

自带吐槽1:基础的图像处理部分的坑,还有一些没有整理完,等过几天开始整理完后,再开始填坑吧,不算烂尾不算烂尾(= =!!自我催眠)

自带吐槽2:不过话说也没谁真的在等着看吧(= = 好桑心!)

2.视频的读入与图像的显示

2.1从AVI文件中读取图像

对于图像处理来说,最开始的实验代码,基本都是从读取一幅图像,然后将其显示出来开始入手的。这是图像处理的“Hello World!”。openCV里将一枚图像读入,并显示的代码如下所示。

<code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;">IplImage* ori= cvLoadImage(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"..\\Data\\Fig0320(4) (bottom_left).tif"</span>,Gray_image);
cvNamedWindow(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Original"</span>, CV_WINDOW_AUTOSIZE );   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//new window</span>
cvShowImage(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Original"</span>,ori);        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//show</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>

其实也就相当于MATLAB里面的imread()imshow()figure()这三个函数;这里值得说的是,如果要让窗口内图片跟着窗口一起扩大的话,可以使用式样CV_WINDOW_NORMAL,也就是如下代码所示。

<code class="hljs scss has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-function" style="box-sizing: border-box;">cvNamedWindow(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Original"</span>, CV_WINDOW_NORMAL )</span>;   <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//new window</span>
<span class="hljs-function" style="box-sizing: border-box;">cvShowImage(<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"Original"</span>,ori)</span>;        <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//show</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li></ul>

对于视频的读入,其实和图像是差不多一样的,使用函数

cvCreateFileCapture(argv[1])去读入一段视频。然后通过函数cvQueryFrame(capture)将其一帧一帧的取出来,然后再用显示图像的方式(cvShowImage()),将其按照一定的时间间隔,逐帧显示出来。

http://www.v1bo.com/110695260

http://www.v1bo.com/110695359

http://www.v1bo.com/110695176

http://www.v1bo.com/110695096

http://www.v1bo.com/110695179

http://www.v1bo.com/110695366

http://www.v1bo.com/110694876

http://www.v1bo.com/110695367

http://www.v1bo.com/110694877

http://www.v1bo.com/110694991

http://www.v1bo.com/110695186

http://www.v1bo.com/110694883

http://www.v1bo.com/110694884

http://www.v1bo.com/110694992

http://www.v1bo.com/110695376

http://www.v1bo.com/110694994

http://www.v1bo.com/110695377

http://www.v1bo.com/110695378

http://www.v1bo.com/110694998

http://www.v1bo.com/110694999

http://www.v1bo.com/110695380

http://www.v1bo.com/110695194

http://www.v1bo.com/110695290

http://www.v1bo.com/110695291

http://www.v1bo.com/110695199

http://www.v1bo.com/110695802

http://www.v1bo.com/110695385

http://www.v1bo.com/110695807

http://www.v1bo.com/110695408

http://www.v1bo.com/110695409

http://www.v1bo.com/110695295

http://www.v1bo.com/110695810

http://www.v1bo.com/110695811

http://www.v1bo.com/110695702

http://www.v1bo.com/110695393

http://www.v1bo.com/110695814

http://www.v1bo.com/110695705

http://www.v1bo.com/110695396

http://www.v1bo.com/110695603

http://www.v1bo.com/110695415

http://www.v1bo.com/110695816

http://www.v1bo.com/110695902

时间: 05-21

[openCV]视频的读入与一些简单的图像处理的相关文章

OpenCV 入门示例之四:一个简单的变换

前言 图像的平滑处理,是计算机视觉中非常重要的操作,本文将展示一个可以对图像进行平滑处理的简单程序.而关于平滑处理深层次的知识,会在以后的文章中重点探讨. 代码示例 1 // 此头文件包含图像IO函数的声明 2 #include "highgui.h" 3 // 此头文件包含基本的图像处理函数和高级计算机视觉算法 4 #include "cv.h" 5 6 int main (void) { 7 8 // 将D盘目录下名为" 1.jpg "的图像

OpenCV 视频处理框架

OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的.虽然其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像重新压缩成视频是非常方便的,下面将介绍将视频解码成图像并进行帧差法等操作的框架搭建,虽然没有介绍如何反向压缩成视频,但其操作也是非常类似的,不过需要注意的是在OpenCV2.1版本图像压缩成视频记得是有BUG的,最好还是用新的版本来进行学习. #include <afxwin.h> #include

QT+OPENCV视频采集

今天终于有了自己的博客了!由于我的时间有限,又初来咋到,只好小试牛刀,写个简单的! Qt学习网站:http://www.yafeilinux.com/ OpenCV中文论坛:http://www.opencv.org.cn/index.PHP/Template:Code 首先介绍下opencv :OpenCV的全称是:Open Source Computer Vision Library.  OpenCV于1999年由Intel建立,现在由Willow Garage提供支持.OpenCV是一个基

使用OpenCV滑动条写成的简单调色器,实时输出RGB值

好久没有写博客了,最近在看OpenCV,于是动手写了个简单的RGB调色器,在终端实时输出RGB的值.通过这个程序学习滑动条的使用.程序中主要用到cvCreateTrackbar ,其用法如下: cvCreateTrackbar 创建trackbar并将它添加到指定的窗口. CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); int cvCreateTrackbar( const char* trackbar_name, cons

opencv视频学习第五课(视频播放控制)笔记整理

这次是学习怎么创建一个控制台的滚动条,并且使用它控制视频的播放.为了测试一些东西,改编了视频教程中的代码. #include "stdafx.h" #include "highgui.h" #include "cv.h" CvCapture* g_capture = NULL; //记录滚动条的当前位置 int g_slider_pos = 0; //对视频帧进行计数的变量 int frame_count = 0; void onTrackbar

opencv视频跟踪2

在前面的报告中我们实现了用SURF算法计算目标在移动摄像机拍摄到的视频中的位置.由于摄像机本身像素的限制,加之算法处理时间会随着图像质量的提高而提高,实际实验发现在背景复杂的情况下,结果偏差可能会很大. 本次改进是预备在原先检测到的特征点上加上某种限制条件,以提高准确率. 问题:如何判定检测到的特征点是否是我们需要的点(也就是目标区域上的点)? 可行方案:用形态学找出目标的大致区域,然后对特征点判定. 特征点(SURF算法或者其他的算法)已有,我们来一步步实现找到目标大致区域. 下图假设为视频中

OpenCV——视频颜色识别

#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int minh,maxh,mins,maxs,minv,maxv; void helptext() { cout << "B——黑色\n"; cout << "H——灰色\n"; cout << "W——白色\n&q

Opencv的使用,NDK的简单使用

1.下载opencv,并解压,将其目录下的sdk复制到eclipse的工作区间目录下,重命名为OpenCV-SDK(随意命名): 2.从eclipse中导入:file->import->general->exiting project into project->next->browse(选择路径)->select all->finish,此时project explorer中会出现opencv library-2.4.10,导入成功: 3.新建一个工程(要使用o

Bugtags 介绍视频 - App 测试 &#183; 从未如此简单

Bugtags 是什么? Bugtags 是移动时代首选 Bug 管理系统,针对不同的使用场景,Bugtags 具有以下强大特性: 移动应用 Bug 管理 Bugtags 可以直接在应用中所见即所得提交 Bug,自动上传截图.操作步骤.控制台日志等数. 移动应用崩溃管理 智能发现并上报所有崩溃数据,包含截图.堆栈.操作步骤.控制台日志等数据. 移动应用用户反馈管理 用户遇到问题只需手机摇一摇并标注,相关数据即可实时同步到你的管理云端. 网站应用 Bug 管理 强大的浏览器插件支持,任何网页 Bu