显示图像和视频

OpenCV 1.0

1.显示图像

#include "highgui.h"

int main() {

    // 加载图像文件到内存
    // cvLoadImage自动分配图像数据结构所需的内存
    // 可读取的图像格式:BMP,DIB,JPEG,JPE,PNG,PBM,PPM,SR,RAS,TIFF
    IplImage *img = cvLoadImage("../pictures/bear.jpeg"); // 用了相对路径

    // 创建窗口,参数2:窗口会根据图像实际大小自动进行拉伸或缩放
    cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);

    // 在已创建的窗口中显示图像
    cvShowImage("Example1", img); // 第一个参数为Example1,在Example1窗口中显示

    // 程序暂停,等待用户出发一个按键(如 command + Q 退出)
//    cvWaitKey(4000); // 毫秒,4s之后程序自动退出
    cvWaitKey(0); // 设为0或负数,程序一直等待直到用户出发操作

    // 用完图像之后,释放内存,release之后,img = NULL
    cvReleaseImage(&img); // 参数类型:IplImage *

    // 销毁显示图像文件的窗口
    cvDestroyWindow("Example1");

    return 0;
}

2.播放mp4视频

播放视频:循环地读取视频中的每一帧

#include "highgui.h"

int main() {

    // 创建窗口
    cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE);
    CvCapture *capture = cvCreateFileCapture("../videos/day.mp4"); // capture保存了视频所有帧

    // IplImage  读取每一帧图像
    IplImage *frame;

    // 循环读取视频的帧
    while (1) {
        frame = cvQueryFrame(capture); // 从capture中Query下一帧
        if (!frame) // 帧读完,退出
            break;
        cvShowImage("Example2", frame);

        // 自定义退出
        int c = cvWaitKey(10); // 每一帧等待10ms,在用户没有按键的情况下,cvWaitKey返回 -1
        if (c == 27) // esc的ASCII码,按esc,退出
            break;
    }

    // 释放,摧毁
    cvReleaseCapture(&capture);
    cvDestroyWindow("Example2");

    return 0;
}

OpenCV2.0显示图像

步骤:

  1. 读取图片(Mat数据结构imread函数
  2. 设置窗口(namedWindow函数
  3. 将图片显示在窗口中(imshow函数
  4. 设置退出(waitKey函数

OpenCV 2.0 不需要在程序末尾设置内存释放和窗口销毁。

#include 
#include 

using namespace cv; // OpenCV中的C++类和函数都是定义在命名空间cv之内的

int main() {

    // Mat对应OpenCV1.0中的IplImage
    Mat bear = imread("../pictures/bear.jpeg");

    // CV_WINDOW_NORMAL:窗口大小可以调整
    // CV_WINDOW_AUTOSIZE: 自适应图片大小,窗口大小不可调整
    namedWindow("bear", CV_WINDOW_AUTOSIZE);

    imshow("bear", bear);

    waitKey(3000); // 3s后退出
}

你可能感兴趣的:(显示图像和视频)