OpenCV开发包提供了读取各种类型的图像文件、视频内容以及摄像机输入的功能。这些功能是OpenCV开发包所包含的HighGUI工具集的一部分。
先看两个小例子:
#include"opencv2/highgui/highgui.hpp"
int main()
{
IplImage* img = cvLoadImage("123.jpg");
cvNamedWindow("Demo1",CV_WINDOW_AUTOSIZE);
cvShowImage("Demo1", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Demo1");
cvLoadImage()函数是一个高层调用接口,它通过文件名确定被加载文件的格式,并且该函数将自动分配图像数据结构所需的内存。cvLoadImage()函数可读取绝大多数格式类型的图像文件,包括BMP,DIB,JPEG,JPG,PNG,PBM,PGM,PPM,SR,RAS和TIFF。该函数执行完后将返回一个指针,此指针指向一块为描述该图像文件的数据结构(IplImage)而分配的内存块。
cvNamedWindow()第一个参数指定了该窗口的标题,同时也作为该窗口的索引。第二个参数可选0或CV_WINDOW_AUTOSIZE,为0时图像根据窗口大小进行伸缩,为CV_WINDOW_AUTOSIZE时,窗口根据图片大小伸缩。
#include"opencv2/highgui/highgui.hpp"
using namespace cv;
int main()
{
Mat image = imread("123.jpg");
imshow("Demo2", image);
cvWaitKey(0);
}
imread和cvloadimage有什么异同啊?
OpenCV提供C接口和C++接口,功能是一样的。选用何种接口,完全取决于个人爱好。 如果你的程序是C风格的,最好选用C接口,如果是C++风格的,最好选用C++接口。 C接口的很多函数需要配对使用,比如:创建矩阵后需要释放矩阵,相对来说,代码量要大一些,一个不小心就会出现内存泄漏。 |