《OpenCV3编程入门》学习笔记二:快速上手OpenCV

一:内容介绍

本节主要介绍以下内容:
1. OpenCV3基本架构 及 官网使用说明
2. 官方例程介绍 及 简单例程赏析

二:学习笔记

1. 官方文档学习

OpenCV3的基本架构在书本P7页有介绍,介绍的挺好,我们也可以从http://docs.opencv.org/3.1.0/ 看出:OpenCV3是按模块组织的,其中又分Main modules和Extra modules ,书中也只是讲了常用的一部分,因此大家要有从官网自主学习的能力。
这里介绍一下如果你对一个函数不了解怎么从官网查到这个函数从而学习。以blur()函数为例:A. 鼠标定位在函数上,摁 F12 或 右键——>转到定义 转到其定义处:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第1张图片
可以看到其在imgproc.hpp中,然后再官网中我们找到imgproc模块:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第2张图片
点进去之后,我们大概能猜到blur()函数应该是在Image Filtering中:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第3张图片
然后我们ctrl+F搜一下blur就能找到这个函数啦:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第4张图片
最后我们就可以看到blur()函数的意义及各个参数的含义啦:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第5张图片

2. 例程

很多使用我们想使用一些功能都喜欢先找一个例程试一下效果,那么去哪找例程呐?大家一般喜欢上网直接搜,这样也可以,但是其官方性不是那么强,不那么规范甚至会有错误。其实OpenCV官方已经提供了很多例子,一是在本地的OpenCV安装文件的samples文件夹中,二是在官网的Examples和Tutorials中也提供了一些例子。比如我做目标跟踪我就可以先看看官网的这些实例教程:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第6张图片
当然《OpenCV3编程入门》这本书里也提供了大量的例程,都还不错啦。

三:相关源码及解析

这里我们分别一个图像腐蚀、模糊和canny边缘检测的例子。

1. 图像腐蚀

源码:

#include
using namespace cv;

int main()
{
    Mat srcImage = imread("poster_cat.jpg");
    imshow("【原始图】", srcImage);

    Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));  //获得指定形状和尺寸的结构元素(内核矩阵)
    Mat dstImage;
    erode(srcImage, dstImage, element);
    imshow("【效果图】", dstImage);
    waitKey(0);

    return 0;
}

素材:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第7张图片
效果图:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第8张图片
提示:

2. 图像模糊

源码:

#include
using namespace cv;

int main()
{
    Mat srcImage = imread("poster_church.jpg");
    imshow("【原图】均值滤波", srcImage);

    Mat dstImage;
    blur(srcImage, dstImage, Size(3, 3));
    imshow("【效果图】均值滤波", dstImage);

    waitKey(0);
    return 0;
}

素材:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第9张图片
效果图:

提示:

3. canny边缘检测

源码:

#include
using namespace cv;

int main()
{
    Mat srcImage = imread("poster_fruits.jpg");
    imshow("【原图】Canny边缘检测", srcImage);

    Mat dstImage;
    dstImage.create(srcImage.size(), srcImage.type());  //创建与srcImage大小和类型相同的矩阵
    Mat grayImage;
    cvtColor(srcImage, grayImage, COLOR_RGB2GRAY);  //转化为灰度图
    Mat edge;
    blur(grayImage, edge, Size(3, 3)); //均值滤波
    Canny(edge, edge, 30, 90); //canny边缘检测,需要了解其原理,选好参数值很关键
    imshow("【效果图】Canny边缘检测", edge);

    waitKey(0);
    return 0;
}

素材:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第10张图片
效果图:
《OpenCV3编程入门》学习笔记二:快速上手OpenCV_第11张图片
提示:

你可能感兴趣的:(计算机视觉)