OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 4050|回复: 7

有偿!怎么提高实时视频的播放速度

[复制链接]
发表于 2018-5-22 13:19:23 | 显示全部楼层 |阅读模式
我现在在玩一个实时视频的代码。但是我的视频流速度特别慢,都是一帧一帧的播放,怎么提高视频的播放速度啊
回复

使用道具 举报

发表于 2018-5-22 13:49:06 | 显示全部楼层
视频本身就是一帧一帧播放的,想要速度快,就减少下watkey的时间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-22 15:13:42 | 显示全部楼层
sunny0o0 发表于 2018-5-22 13:49
视频本身就是一帧一帧播放的,想要速度快,就减少下watkey的时间。

可是我根本没有写关于waitkey的代码啊
回复 支持 反对

使用道具 举报

发表于 2018-5-22 15:57:06 | 显示全部楼层
a847572890 发表于 2018-5-22 15:13
可是我根本没有写关于waitkey的代码啊

把你的代码贴出来看看就知道了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-22 16:14:37 | 显示全部楼层
stq054188 发表于 2018-5-22 15:57
把你的代码贴出来看看就知道了

我没有权限发表URL链接。。。代码复制不上去。。等我百度一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-22 16:16:18 | 显示全部楼层
stq054188 发表于 2018-5-22 15:57
把你的代码贴出来看看就知道了

#include "stdafx.h"
#include <time.h>  
#include <windows.h>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

Mat Srcimg, Grayimg, dstimg,c;
Mat a; //                 Canny 边缘检测相关变量
int b = 1;   //同上

string imgPath="这个网址发不上去";
/*FileStorage fsWrite;
string FilePath = "mode.yaml";*/
static void on_Canny(int, void*);
int _tmain(int argc, _TCHAR* argv[])
{
                /*bool n =0;*/
                VideoCapture capture(imgPath);  //调用摄像头
                if (!capture.isOpened())
                {
                        printf("can't open capture\n");
                        waitKey(0);
                        getchar();
                        return -1;
                }
                else
                {
                        printf("you can open this!\n");
                }
                namedWindow("效果图",1);
       
                capture >> c;
                imshow("效果图", c);
       
       
        while (1)
        {
               
                capture >> Srcimg;     //逐帧显示,一直循环

                imshow("原图!\n", Srcimg);
                dstimg.create(Srcimg.size(), Srcimg.type());   //建立一个和Srcimg一样大小,一样类型的矩阵dstimg
                cvtColor(Srcimg, Grayimg, COLOR_BGR2GRAY);     //将图像转换为灰度图
                //namedWindow("效果图",WINDOW_AUTOSIZE);
                createTrackbar("参数值:", "效果图 Canny边缘检测", &b, 120, on_Canny);//建立一个滑动条
                on_Canny(0, 0);



                if (waitKey(30) == 27)   //按键esc退出
                {
                        break;
                }
                /*if ()
                {
                        break;
                }*/
        }

        return 0;
}


void on_Canny(int, void*)   //回掉函数
{
        blur(Grayimg, a, Size(2, 3));
        Canny(a, a, b, b * 5, 3);
        dstimg = Scalar::all(0);
        Srcimg.copyTo(dstimg, a);
        imshow("效果图 Canny边缘检测", dstimg);
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-22 16:19:14 | 显示全部楼层
sunny0o0 发表于 2018-5-22 13:49
视频本身就是一帧一帧播放的,想要速度快,就减少下watkey的时间。

大佬,我的代码发出来了,,,您不介意的话 帮我看一下把。。实时的视频播放的速度就会很慢,之前把他的显示变成1/4,速度快了一点,但是直接出bug了,
回复 支持 反对

使用道具 举报

发表于 2018-6-6 19:30:00 | 显示全部楼层
本帖最后由 mhaoyang 于 2018-6-6 19:31 编辑

感觉你的代码有问题啊。

你在实时显示的时候,还一直创建矩阵跟滚动条,这两个操作是白白浪费时间的。
把这两个操作拿出来。

dstimg.create
createTrackbar
再者,你测一下OnCanny的执行时间,感觉这个算子比较耗时。
另外,waitkey 时间也小一点。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-3-29 03:42 , Processed in 0.017815 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表