• 对实时的视屏流进行处理


      对实时的视屏流进行处理,实质还是对单幅图片进行处理!

      

    #include "stdafx.h"
    #include "cv.h"
    #include "highgui.h"
    
    int g_slider_position = 0;
    CvCapture * g_capture =NULL;
    
    void onTrackbarSlide(int pos){  //再拖动滚动条的时候,滚动条的位置会被作为int数字传入
        cvSetCaptureProperty(
            g_capture,
            CV_CAP_PROP_POS_FRAMES,
            pos
            );
    }
        
    void example4(IplImage * image){ //对图片进行平滑处理
        cvNamedWindow("Example4-in");
        cvNamedWindow("Example4-out");
        cvShowImage("Example4-in",image);
    
        IplImage* out=cvCreateImage( //创建一个size为image,三通道8位的彩色图
            cvGetSize(image),
            IPL_DEPTH_8U,
            3
        );
    
        cvSmooth(image,out,CV_GAUSSIAN,3,3); //进行模板为3*3的平滑处理
        cvShowImage("Example4-out",out);
    
        cvReleaseImage(&out);
        //cvWaitKey(0);这个加上的话视屏会停顿
    //    cvDestroyWindow("Example4-in");//这个加上的话视屏会闪,不停的申请释放窗口= =,但是删去的话内存好像也没有泄露
    //    cvDestroyWindow("Example4-out");
    }
    
    int main(){
        cvNamedWindow("Example3",CV_WINDOW_AUTOSIZE);//申请可以自动调节大小的窗口Example1
        g_capture=cvCreateFileCapture("F:/film/kq.avi");//读取avi格式的影片
    
        int frames = (int) cvGetCaptureProperty(
                g_capture,
                CV_CAP_PROP_FRAME_COUNT
        );
    
        if(frames != 0){
            cvCreateTrackbar(  //进度条
                "Position",
                "Example3",
                &g_slider_position,
                frames,
                onTrackbarSlide
                );
        }
    
        IplImage * frame;
        while(1){
            frame = cvQueryFrame(g_capture);//读取下一个影片帧率
            if(!frame)break;
            cvShowImage("Example3",frame);
            example4(frame);//对单帧图像进行处理
            char c=cvWaitKey(1); //每读取一个视频片度就停止33毫秒,并且会收集键盘的输入
            if(c == 27)break;//27就是对应键盘上的ESC建,如果没有按键盘的话C为-1
        }
    
        cvReleaseCapture(&g_capture);
        cvDestroyWindow("Example2");
    
        return 0;
    }

    参考:学习opencv

  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/huhuuu/p/3525497.html
Copyright © 2020-2023  润新知