前言
自从五月份换了一个工作,也仅仅写了一个APP,然后看了一个leveldb源代码,仅仅看了部分,具体关于内存操作的部分,还跳过去了,live555这套代码的核心部分,也就是视频的编解码部分,也不是很透彻,ffmpeg更是内容根本没有详细看,仅仅了解下调用接口罢了,对Linux的编译环境也花了一段时间进行了了解(因为我一直喜欢Linux,并且在看ffmpeg过程中,对编译环境-makefile进行了比较详细的了解)。我的2017年就这样过去了。内心还是很是惶恐的。计划在这个春节前,做一件事让自己稍微安心一些-准备了解下opencv的借口调用。有时间了解下opencv中机器学习的源代码。
正文
关于opencv的学习计划,本来准备找本书好好看看,可是我觉得这些不能满足我的需求,我们直接看官方的一些demo,虽说比较多,可是我们耐着心.但是代码比较少,我相信我们可以完成。具体链接是opecv官方教程
安装和开发环境配置,这里不在详细介绍。因为这个系列暂时不涉及源码阅读,我这里没有用vs配置开发环境测试代码我有vs和Linux的g++。
首先我们第一篇进行helloworld的教程,对于opencv,显示一个图片就是向这个图像的世界的问好,我们看下代码
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片(游戏原画)
Mat img=imread("timg.jpeg");
// 创建一个名为 "游戏原画"窗口
namedWindow("游戏原画");
// 在窗口中显示游戏原画
imshow("游戏原画",img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
而我们的目录有三个文件
makefile这是sample中自带的,只要改变一些文件名字就ok,这里不在详细介绍,图片是我自己随便找的,最终效果图是:
这里我们稍微分析一下:Mat是一个类,保存这图片的信息,这里我强调下,图片在计算机中模型就是一个二维的数组,Mat包含了一个二维数组。这里就不在详细了解。但是这是一个通过智能指针维持的一个类,不用纠结内存的管理。
第二个问题是imread("timg.jpeg")
这个东西是一个函数调用,里面封装了对图片的解码工具,可以提供路径返回opencv可以处理的Mat数据。
剩下的代码这里就不再详细介绍,因为这就是提供了一个窗口管理系统(这是可以兼容的,背后还是封装了好些内容,不过这不是我们的重点)。
后记
这里很简单的谢了一篇文章,作为一个开头,希望可以通过这个开头让我可以在这个残缺的2017年中有所完整的东西留下来。2018年我要比今年好。