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


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

      

    #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

  • 相关阅读:
    G
    C
    B
    B
    线段树模板
    网络流模板
    POJ_1631_Bridging_Signals_(动态规划,LIS)
    POJ_1065_Wooden_Sticks_(动态规划,LIS+鸽笼原理)
    BZOJ_1015_星球大战_[JSOI2008]_(并查集)
    POJ_3280_Cheapest_Palindrome_(动态规划)
  • 原文地址:https://www.cnblogs.com/huhuuu/p/3525497.html
Copyright © 2020-2023  润新知