第一个OpenCV程序的说明

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

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

#include "stdafx.h"
#include 

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)

  • 函数返回一个Mat类型的对象。
  • 第一个参数指定图片的路径。
  • 第二个参数指定图片加载格式。
    第二个参数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类的data属性为指向图像数值数组的第一个元素的unsigned char类型的指针。每一个矩阵元素为1byte的0~255的整数。
  • 当为RGB格式加载图像时,图像数值数组的格式为 B值-G值-R值-B值......, 即数值数组的第一个元素为第一个像素的蓝色值, 数值数组的第二个元素为第一个像素的绿色值,数值数组的第三个元素为第一个像素的红色值....
  • Mat类的rows()方法获得图像像素的行数,cols()方法获得图像像素的列数。

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

cm::imshow函数

cm::imshow函数的原型为

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

  • 第一个参数指定应用程序的名称。
  • 第二个参数为一个Mat类型的对象。

cm:; waitKey函数

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

头文件引入

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

#include

实际上,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

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

小结

  • 对第一个OpenCV程序中的imread、imshow、waitKey函数进行的小小的说明。
  • 说明了OpenCV库的引入方式。

你可能感兴趣的:(第一个OpenCV程序的说明)