《OpenCV3编程入门》学习笔记一:邂逅OpenCV

一:内容介绍

本节主要介绍以下内容:
1. OpenCV3环境搭建
2. 快速上手尝试:图像显示、读取并播放视频、调用摄像头采集图像

二:学习笔记

1. 环境配置

在OpenCV3中,项目架构发生了一些变化,除了主仓库外新增了opencv_contrib仓库,里面包含人脸识别、新的边缘检测、SIFT算子、新的光流和追踪算法等。个人建议最好是配置一下opencv_contrib库,毕竟我们还是尽量跟随潮流用一些比较新的东西。关于环境配置可参照之前的博文:Opencv3.1.0+opencv_contrib配置及使用SIFT测试 ,里边ubuntu和windows下环境配置的方法都有,但在平常使用时我们一般以windows为主。
另外,强烈建议在VS平台上安装ImageWatch插件,opencv调试利器,参考Opencv+VS插件推荐:调试过程内存中图片Mat变量查看器Image Watch

2. 初试opencv

安装好之后自然就要用了,这里我们可以先尝试一下 图像显示读取并播放视频调用摄像头采集图像。很简单具体就不解释了,详见第三部分相关源码

3. 学习资料

A. 首先官网doc肯定是最重要的,要常逛:http://docs.opencv.org/3.1.0/ ,大家主要关注HighGUI(学习笔记)、Core(学习笔记)、Imgproc(学习笔记)和feature2d模块(十一);
其他的一些还有http://answers.opencv.org/questions/http://www.opencv.org.cn/
一些博客:http://blog.csdn.net/zhmxy555/article/category/1923021http://blog.csdn.net/baimafujinji/article/details/48467225http://blog.csdn.net/yang_xian521/article/category/910716/4
还有我们大部分人都是因为想要学视觉所以才会接触OpenCV,这里强烈推荐Stanford Vision Lab
B. OpenCV说到底只是一个函数库,而我们也只是调用它的接口而已。
在学习过程中建议多点进去看一看相关的源码,看别人怎么实现的,多从数字的角度想一想这个函数实现了什么功能;
还有可以学习一下OpenCV里边C++的实现方法,里面大量使用了函数模板、智能指针等,好多开源的优秀库都是这样,很值得学习;
学习视觉一定要代码与原理并重,推公式和写代码一样重要,甚至经过时间的消磨,前者更重要。我身边一般备有书籍《OpenCV3编程入门》、《数字图像处理原理与实践(MATLAB版)》,《数字图像处理与机器视觉——Visual C++与Matlab实现》。七月视觉课上老师推荐了一本《Computer Vision:Algorithms and Applications》(计算机视觉——算法与应用),我没看,应该不错,呵呵。

三:相关源码及解析

1. 图像显示

源码:

#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
    Mat srcImage = imread("poster_flower_2.jpg");
    imshow("【窗口名】", srcImage);
    waitKey(0);  //等待任何按键触发
    return 0;
}

素材:
这里写图片描述
效果图:

提示:
A. 图片文件的名称和代码中的名称要一致
B. 一般情况下我们只需要包含头文件opencv2/opencv.hpp即可,因为里边已经包含了核心库的所有头文件,大家可以打开看一下。

2. 读取并播放视频

源码:

#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
    VideoCapture capture("video_dota2.avi");
    Mat frame;
    capture >> frame; //读入一帧图像

    //循环显示每一帧
    while (!frame.empty())
    {
        imshow("data2", frame);
        waitKey(30);
        capture >> frame;
    }

    return 0;
}

素材:
略,自己随便找个视频就行
效果图:

提示:
A. 视频文件的名称和代码中的名称要一致
B. 一般情况下我们只需要包含头文件opencv2/opencv.hpp即可,因为里边已经包含了核心库的所有头文件,大家可以打开看一下。

3. 调用摄像头采集图像

源码:

#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
    VideoCapture capture(0); //当只有一个摄像头时默认device id为0

    while(1)
    {
        Mat frame;
        capture >> frame;
        imshow("【摄像头】", frame);
        waitKey(30);
    }

    return 0;
}

素材:

效果图:

  • 13
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值