[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

时间: 2024-11-07 09:31:20

[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

OpenCV视频序列操作基础

 从视频序列中抓取一帧 OpenCV支持从摄像头或视频文件(AVI)中抓取图像. 从摄像头获取初始化: CvCapture* capture = cvCaptureFromCAM(0); // capture from video device #0 从视频文件获取初始化: CvCapture* capture = cvCaptureFromAVI("infile.avi"); 抓取帧: IplImage* img = 0; if(!cvGrabFrame(capture)){  

OpenCV视频读取播放,视频转换为图片

转载请注明出处!!! http://blog.csdn.net/zhonghuan1992 OpenCV视频读取播放,视频转换为图片 介绍几个有关视频读取的函数: VideoCapture::VideoCapture VideoCapture能够从文件里或者摄像头中读取视频,这是提供给C++的接口的.C的接口是CvCapture结构.        <span style="white-space:pre"> </span>C++: VideoCapture::

用numpy.pad()对图像进行填充及简单的图像处理

三.用numpy.pad()对图像进行填充及简单的图像处理 https://blog.csdn.net/wang454592297/article/details/80854996 一.用numpy.pad()对图像进行填 我们都知道在css的盒子模型中,有padding(内边距)这一属性.同css中的padding类似,在numpy中,numpy.pad()可以跟矩阵添加内边距,这一方法在CNN中的卷积层可以用到,可以影响到卷积后矩阵的维度,其用法如下: numpy.pad(array, pa

opencv中的视频的读入

#include"stdafx.h"#include"opencv2/opencv.hpp" using namespace cv;int g_slider_position = 0; CvCapture* g_capture = NULL; void onTrackbarSlider(int pos) { cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos ); } int main(int a

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