第一个OpenCV程序的说明

2016-06-12  本文已影响313人  smallpi

在上一节的OpenCV简介和配置中,我们写了第一个OpenCV程序,加载了一张图片并进行显示。下面先给出上一节的第一个OpenCV程序并进行说明。

// OpenCVTest.cpp : 定义控制台应用程序的入口点。

#include "stdafx.h"
#include <opencv2/opencv.hpp>

int _tmain(int argc, _TCHAR* argv[])
{
    cv::Mat img = cv::imread("J:\\VS2010Projects\\OpenCVTest\\OpenCVTest\\smallpi.jpg");
    cv::imshow("hello world",img);
    cv::waitKey(0);
    
    return 0;
}

cv::imread函数

命名空间cv下的函数imread的原型为

Mat imread(const string& filename, int flags)

CV_LOAD_IMAGE_UNCHANGED (以RGBA格式加载,一个像素占4byte内存)
CV_LOAD_IMAGE_GRAYSCALE (以灰度图像的格式加载,一个像素占1byte内存)
CV_LOAD_IMAGE_COLOR (以RGB格式加载,一个像素占3byte内存)

CV_LOAD_IMAGE_COLOR 是默认的图片加载格式。

Mat类

cv::imread函数读取图片后的就返回一个Mat类型的对象。Mat类对象保存着所加载图片的信息。

Mat类还有许多有用的属性和方法,以后用到时再作说明。

cm::imshow函数

cm::imshow函数的原型为

void imshow(const string &winname, cv::InputArray mat);

cm:; waitKey函数

waitKey在这里的作用是等待用户键盘或鼠标的输入,使得应用程序不会闪一下就退出了。

头文件引入

上面的OpenCV程序引入头文件的形式如下

#include <opencv2/opencv.hpp>

实际上,opencv.hpp文件的作用就是帮我们把所有的OpenCV头文件引入进来。opencv.hpp的源码如下。

#ifndef __OPENCV_ALL_HPP__
#define __OPENCV_ALL_HPP__

#include "opencv2/core/core_c.h"
#include "opencv2/core/core.hpp"
#include "opencv2/flann/miniflann.hpp"
#include "opencv2/imgproc/imgproc_c.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/photo/photo.hpp"
#include "opencv2/video/video.hpp"
#include "opencv2/features2d/features2d.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/calib3d/calib3d.hpp"
#include "opencv2/ml/ml.hpp"
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/contrib/contrib.hpp"

#endif

这是一种头文件引入时偷懒的作法。引入所有的文件可能会增加程序的大小。

小结

上一篇下一篇

猜你喜欢

热点阅读