欢迎关注,定期更新
从这一篇开始,我们来简单的了解opencv的一些概念和应用,关于opencv的起源、发展之类的不再赘述。首先来说一下环境配置,这里本人是vs2010+opencv3.1,opencv3.1的源码可以在官网上下载,下载下来后进行编译,这里本人编译成了64位的。关于具体的配置步骤和编译步骤,大家可以参考网上的一大堆资料,这里不再赘述。下边直接来第一个例子,图像的读取和显示,代码给出两种版本,一种是旧版本的数据结构和函数,一种是新版本
int _tmain(int argc, _TCHAR* argv[])
{
//new version
/*
Mat aa=imread("aa.jpg");
namedWindow("test image aa");
imshow("test image aa",aa);
waitKey();
*/
//old version
IplImage *image=cvLoadImage("aa.jpg");
cvNamedWindow("test image aa");
cvShowImage("test image aa",image);
cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("test image aa");
return 0;
}
简单解释一下,Mat是新版本表示图像的结构矩阵,旧版本是IplImage* 这个指针,前边的是新版本的函数,后边是旧版本的函数,当然关于Mat和IplImage* 这两种结构,大家感兴趣的可以去看一下源码,不理解也没关系,我们的目的只是简单的应用。namedWindow函数和cvNamedWindow函数都是创建一个窗口,imshow函数和cvShowImage函数都是在创建的窗口中显示图像,第一个参数是窗口名,第二个参数是图像;waitKey函数和cvWaitKey函数是事件函数,等待键盘输入;在旧版本中由于使用了指针,故此最后要释放,cvReleaseImage就是释放图像指针,参数是图像指针的指针,即指向图像内存的地址。
这第一篇小试牛刀就到此结束,下边给出源码:
// opencv_test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
//new version
/*
Mat aa=imread("aa.jpg");
namedWindow("test image aa");
imshow("test image aa",aa);
waitKey();
*/
//old version
IplImage *image=cvLoadImage("aa.jpg");
cvNamedWindow("test image aa");
cvShowImage("test image aa",image);
cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("test image aa");
return 0;
}