OpenCV-最基本的图像操作

真正开始学习OpenCV的操作之前,我们先来打个地基。
OpenCV最重要的操作就是操作图片了,那我们如何把图片加载到我们的程序里来呢?那就是需要一个容器和一个函数了。在介绍它们之前,我们先看一段例程:

#include <iostream>

#include <opencv2/core.hpp>

#include <opencv2/highgui.hpp>

#include <opencv2/imgcodecs.hpp>

#include <opencv2/imgcodecs/legacy/constants_c.h>

using namespace cv;

using namespace std;

int main()

{

    Mat image;

    image = imread("D:\\ss.jpg",CV_LOAD_IMAGE_COLOR);

    if(image.empty())

    {

        cout << "Could not open or find the image"<< std::endl;

        return-1;

    }

    namedWindow("Display window",CV_WINDOW_AUTOSIZE)

    imshow("Display window", image);

    waitKey(0);

    std::cout << "Hello World!\n";

}


好了,我们一部分一部分的看。

一,五个include,前两个就像是固定搭配,我们可以理解成必须添加的,一个是管着输入输出的,一个是核心类库。而剩下的那些都是程序里出现的一些函数或者参数必须添加的,要不然程序找不到。

二,我们的两个using namespace,它们的作用就是让我们的程序活动在cv和std两个命名空间下,以节省我们调用函数时每一个都要加前缀(就像最后一句std::cout << "Hello World!\n";  其实前面的std::完全可以省略)。

三,下面就是我们的主函数main了,我想有C++基础的同学都能看懂这个头。下面我们就主要看里面的函数了。

在我们要加载图片进来之前,要先给它分配一块空间,这就要用Mat来定义一个对象了。对象定义好后,怎么把图片加载进来呢,就要用imread来操作了。

Mat image;

image = imread("D:\\ss.jpg",CV_LOAD_IMAGE_COLOR);

这里的参数CV_LOAD_IMAGE_COLOR表示图片加载时用RGB颜色格式,当然了,它还可以替换成其他两种参数:

CV_LOAD_IMAGE_UNCHANGED  以原始图像读取(包括alpha通道)

CV_LOAD_IMAGE_GRAYSCALE  以灰度图像读取

这两种颜色格式,后面学习中肯定会碰到的,现在了解一下就可以了。

再后面是一个判断,如果图片加载进来是空,参提示错误。

好了,图片加载进来了,怎么显示出来让人看呢,就要用到窗口了。我们先用namedWindow定义一个窗口,再用imshow将刚才加载进来的图片放到窗口中显示就可以了。

namedWindow("Display window",CV_WINDOW_AUTOSIZE)

imshow("Display window", image);

这里的"Display window"是窗口名。如果我们不用QT开发,CV_WINDOW_AUTOSIZE参数是必须的。

waitKey(0);是表示我们关闭控制台窗口时,用敲键的方式。

最后有一个控制台的输出“Hello World!”结束。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。