本博客所用OpenCV版本为2.4.3,运行环境为Visual Studio2012。
学习OpenCV是一个比较漫长的过程,希望我能够坚持!
(一)从Mat讲起
Mat是OpenCV中用于存放图像的数据结构。我们知道,图像在计算机中是以数组的形式存放的。Mat正是描述的这样一种数据结构。通过调用相关方法,我们能够实现对图像的输入输出以及一些操作。同时,Mat又不止可以作为图像容器,它也可以作为一种比较纯粹的描述矩阵这种数学对象的结构。它比C中的IplImage好的地方在于,由于它的“计数器”机制,我们不需要对它进行手动的内存回收,从而避免了常常困扰C/C++程序员的“内存泄露”问题。
让我们先来看看如何使用Mat来进行图像的输入输出。能够看到程序按照自己所想输出图片还是一件比较令人高兴的事情吧!
下面我将直接贴出代码,再进行解释。
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/core/core.hpp>
//#include <opencv/cv.hpp>
using namespace std;
using namespace cv;
int main()
{
string namePic="pic.jpg";
//Part 1 Read and Load Image
/************************************************************************/
/* 下面的代码显示了如何用imread函数进行图像读取操作 */
/************************************************************************/
Mat Img_Colo