美文网首页CV
显示图像和视频

显示图像和视频

作者: 谢小帅 | 来源:发表于2017-07-11 12:35 被阅读8次

    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 <opencv2/core/core.hpp>
    #include <opencv2/highgui/highgui.hpp>
    
    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后退出
    }
    

    相关文章

      网友评论

        本文标题:显示图像和视频

        本文链接:https://www.haomeiwen.com/subject/ceaphxtx.html