1.序言
作为一个计算机图像处理的工具,因为免费公开呀,版权等等的原因,openCV开始展现出一些无可取代的优势(已经展露好久了好吧)。嘛,之前我研究生阶段,一直再用MATLAB在干活,总感觉调试呀,验证啊,还是MATLAB要好用一些呢!不久前,自己也开始接触了openCV,总感觉虽然都是工具,但是水很深的样子。嘛,总是还是开个关于openCV的坑,记录下自己的学习的轨迹吧。
自带吐槽1:基础的图像处理部分的坑,还有一些没有整理完,等过几天开始整理完后,再开始填坑吧,不算烂尾不算烂尾(= =!!自我催眠)
自带吐槽2:不过话说也没谁真的在等着看吧(= = 好桑心!)
2.视频的读入与图像的显示
2.1从AVI文件中读取图像
对于图像处理来说,最开始的实验代码,基本都是从读取一幅图像,然后将其显示出来开始入手的。这是图像处理的“Hello World!”。openCV里将一枚图像读入,并显示的代码如下所示。
IplImage* ori= cvLoadImage("..\\Data\\Fig0320(4) (bottom_left).tif",Gray_image);
cvNamedWindow("Original", CV_WINDOW_AUTOSIZE ); //new window
cvShowImage("Original",ori); //show
其实也就相当于MATLAB里面的imread()
,imshow()
与figure()
这三个函数;这里值得说的是,如果要让窗口内图片跟着窗口一起扩大的话,可以使用式样CV_WINDOW_NORMAL,也就是如下代码所示。
cvNamedWindow("Original", CV_WINDOW_NORMAL ); //new window
cvShowImage("Original",ori); //show
对于视频的读入,其实和图像是差不多一样的,使用函数
cvCreateFileCapture(argv[1])
去读入一段视频。然后通过函数cvQueryFrame(capture)
将其一帧一帧的取出来,然后再用显示图像的方式(cvShowImage()
),将其按照一定的时间间隔,逐帧显示出来。
基本思路就是上述那样,这里按照教材上的做法,加入了一个滑块控件作为进度显示的。其代码实现如下(代码基本和教材一致= =)
//------------------------------------------------------
// 内容:
// 视频「江ノ電」的读入
// 视屏的播放
// 滑块控件的添加
//
// 2015.5.18
// by zhou fan
// ------------------------------------------------------
#include "stdafx.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
using namespace std;
int g_slider_position = 0;
CvCapture* capture = NULL;
void onTrackbarSilde(int pos)
{
cvSetCaptureProperty(capture,
CV_CAP_