安装好opencv2.2后,就可以试试编写一些简单的程序了。
同时在安装目录下有一些例子,很不错,可以看看。下面是对opencv的初级运用:打开并显示出一幅图像。
先给出一个函数:cvLoadImage(arg1,arg2)。从这个函数的名字就知道这是读入一张图像。带2个参数,还回值是一个IpImage的指针。
arg1:filename,文件的名字
arg2:可以有3个值。-1,以原始通道数读入;0,强制转化为灰度;1,读取彩色图像。
然后是使用cvNameWindow和cvShowImage来创建窗口,显示图像。
这样就简单的显示出一幅图像。下面是一个写好C的例子,可以参考下。
同时也有一个C++的例子
需要说明的是C++版的图像不用费心release,在析构中会帮你搞定。同时可以看到出现了一张名为“lena.jpg”的图像。这是一张对比很强的图片很出名,同时也很养眼,呵呵。大家有兴趣可以去搜一下。我记得这是一张playboy的封面图。
上图就是那张了,全图可以去搜索。
重点来了。上面都是对图片(已经有格式头)的处理。很多时候情况是对原始数据进行处理。也就是说只有图像数据,没格式头。现在有3张办法
1.使用工具(或自己写个matlab或者C++的小程序)进行处理。将图像数据打包成图片格式。
2.使用mat格式。在opencv中有矩阵类型。可以将数据直接读入,然后处理矩阵。
3.对图像数据(data)进行处理。这是我常用的一种方法。
下面对第3种方法进行简单介绍。
在opencv中一般我喜欢将图像装入IpImage这给类。原因是函数多,简单。在IpImage中有成员变量data。从名字就可以看出是这个图像的数据存放指针。做法就是使用cvCreatImage初始化IpImage的大小,然后直接向data写入图像数据。这里对指针的使用很暴力,谨慎操作。下面贴出我的代码,很暴力。
虽然暴力了点,但效率相当不错。处理的都是25M的文件流,耗时几乎不计。