HighGUI

  OpenCV将与操作系统、文件系统和摄像机之类的硬件进行交互的一些函数纳入HighGUI(high-level graphical user interface)库中。HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。本文介绍如何显示图像和播放视频。

图像显示

  在前面介绍如何创建项目时,就展示了如何显示图像。这里再次列出主要代码。

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

int main()
{
    Mat img = imread("E:/TestData/lena.jpg");
    if (img.empty())
    {
        std::cout << "Error: load image failed." << std::endl;
        return -1;
    }
    namedWindow("image", WINDOW_AUTOSIZE);
    imshow("image", img);
    waitKey();
    return 0;
}

利用imread函数将图像载入到Mat类中,然后利用imshow显示。
imread函数可以在OpenCV官方文档中查到原型:

Mat imread(const string& filename,  intflags = 1)

其中第一个参数传入图片路径。第二个参数,int类型的flags,为载入标识,它指定了一个加载图像的颜色类型。默认是1,标识载入三通道的彩色图像。

imshow()函数用于在指定的窗口中显示一幅图像。原型如下:

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

其中第一个参数用于在指定的窗口中显示图像。第二个参数是需要显示的图像。

播放视频

  可以利用VideoCapture类进行视频的读取和播放。视频的播放,其实就是依次显示每一帧。相关代码如下:

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

int main()
{
    //read video
    VideoCapture capture("E:/TestData/1.avi");

    //display every frame
    while (1) {
        Mat frame;
        capture>>frame; //read current frame
        imshow("Read Video", frame); //display current frame
        waitKey(30); //delay 30ms
    }
    return 0;
}

由于实际开发中,我们需要利用Qt或MFC等制作复杂的GUI,所以就不详细介绍了。

示例下载

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐