在centos7下验证VideoCapture功能。

1 opencv处理视频时要使用ffmpeg,这里使用添加源的方式安装,分为3步

1.1 先安装EPEL Release,使用其他的repo源,所以需要EPEL支持
yum install -y epel-release 
#如果出现缺少Code提示,可以:
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
#安装完成之后,可以查看是否安装成功
yum repolist

1.2 安装Nux-Dextop源

#导入一个Code
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro 
#安装nux-dextop 源
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm
#查看repo源是否安装成功
yum repolist

1.3 yum安装ffmpeg
yum install -y ffmpeg
yum install -y ffmpeg-dev

2 还要安装gtk库

yum install gtk+-devel gtk2-devel

3 此时可以编译opevcv源码,在源码根目录下建立一个build目录,进入build目录执行

cmake ..

make

make install

到此处安装完成

4 验证程序

摄像头

    #include <opencv2/opencv.hpp>  
    #include <iostream>  
      
    int main()  
    {  
        cv::VideoCapture capture;  
        capture.open(0);//open 根据编号打开摄像头
        std::cout<<"-------------"<<std::endl;
        if (!capture.isOpened())  
        {  
            std::cout << "Read video Failed !" << std::endl;  
            return 0;  
        }  
      
        cv::Mat frame;  
        cv::namedWindow("video test");  
      
        int frame_num = 800;
      
        for (int i = 0; i < frame_num - 1; ++i)  
        {  
            capture >> frame;  
            //capture.read(frame);
            imshow("video test", frame);  
            if (cv::waitKey(30) == 'q')  
            {  
                break;  
            }  
        }  
      
        cv::destroyWindow("video test");  
        capture.release();  
        return 0;  
    } 

本地文件

    #include <opencv2/opencv.hpp>
#include <iostream> int main()
{
cv::VideoCapture capture;
capture.open("test.mp4");
std::cout<<"-------------"<<std::endl;
if (!capture.isOpened())
{
std::cout << "Read video Failed !" << std::endl;
return ;
} cv::Mat frame;
cv::namedWindow("video test"); capture.get(cv::CAP_PROP_FRAME_COUNT);
std::cout << "total frame number is: " << frame_num << std::endl; for (int i = ; i < frame_num - ; ++i)
{
capture >> frame;
//capture.read(frame);
imshow("video test", frame);
if (cv::waitKey() == 'q')
{
break;
}
} cv::destroyWindow("video test");
capture.release();
return ;
}

5 说明

运行时出现

Unable to stop the stream: Inappropriate ioctl for device

是因为没有安装ffmpeg-dev导致。

不能播放时确认是否安装yum install gtk+-devel gtk2-devel

opencv VideoCapture使用示例的更多相关文章

  1. Opencv VideoCapture实时捕捉摄像头信息

    #include "opencv2/highgui/highgui.hpp" #include <iostream> using namespace cv; using ...

  2. opencv videocapture

    import time import cv2 import numpy as np from os import path import pickle ''' 关于camera id 此处需要稍微说几 ...

  3. OpenCV平滑处理示例代码

    #include<cv.h> #include<highgui.h> int main(int argc, char** argv) { IplImage* img = cvL ...

  4. c++ opencv 数学函数示例

    // ConsoleApplication11.cpp : Defines the entry point for the console application. // #include " ...

  5. OpenCV VideoCapture.get()参数详解

    转自https://blog.csdn.net/u011436429/article/details/80604590 方便查阅

  6. [OpenCV-Python] OpenCV 中视频分析 部分 VI

    部分 VI视频分析 OpenCV-Python 中文教程(搬运)目录 39 Meanshift 和 和 Camshift 目标 • 本节我们要学习使用 Meanshift 和 Camshift 算法在 ...

  7. QT与openCV,与PCL结合!

    (1):详解QT多媒体框架:给予视频播放器 原文链接:http://mobile.51cto.com/symbian-271123.htm 对于使用主框架的QT程序,实现Qimage的转换可借鉴下面程 ...

  8. OpenCV 之 图像平滑

    1  图像平滑 图像平滑,可用来对图像进行去噪 (noise reduction) 或 模糊化处理 (blurring),实际上图像平滑仍然属于图像空间滤波的一种 (低通滤波) 既然是滤波,则图像中任 ...

  9. 【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析(转)

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20537737 作者:毛星云(浅墨)  ...

随机推荐

  1. 首页音乐播放器添加"多首音乐"

    添加音乐播放器可以去这个博主的网址参考学习 原文链接:http://www.cnblogs.com/RhinoC/p/4695509.html 以下是针对添加“多首音乐”的详细过程: (注:由于之前并 ...

  2. 学会用requirejs,5分钟足矣

    学会用requirejs,5分钟足矣 据说公司的项目较多的用到requirejs管理依赖,所以大熊同学挤出了5分钟休息时间学习了一下,现在分享一下.如果你想了解requirejs的实现原理,请绕道!如 ...

  3. (转)JAVA新特征

    Java线程:新特征-有返回值的线程   在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.   现在Java终于有可返回值的任务 ...

  4. [node] node 版本更新

    一. 命令 node -v sudo npm cache clean -f // 清除缓存 sudo npm install -g n // 安装Node 模块 sudo n stable // 升级 ...

  5. (转)fiddler实现手机抓包的基础设置问题

    电脑最好是笔记本,这样能和手机保持统一局域网内:其他不多说,直接说步骤了. 一.对PC(笔记本)参数进行配置    1. 配置fiddler允许监听到https(fiddler默认只抓取http格式的 ...

  6. div标签清除float浮动样式方法

    方法一. 这个方法来源于positioniseverything ,通过after伪类实现,完全兼容当前主流浏览器. 1 <style type="text/css"> ...

  7. 拓扑排序 topsort详解

    1.定义 对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列. 举例: h3 { marg ...

  8. C# 获取并判断操作系统版本,解决Win10、 Windows Server 2012 R2 读取失败的方案

    Windows 8.1, Win10之后,通过GetVersion and GetVersionEx 方法获取WIndows操作系统版本号的功能需要添加manifest文件后才能查找到,不然的话会查找 ...

  9. dfs+剪枝:poj2362

    贴题目 Square Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 24604   Accepted: 8449 Descr ...

  10. 微软认知服务 Luis

    学习认知服务 Luis(Language understand intellgence service) 简述: 开发者可以通过Luis开发可以理解人类语言的只能应用,学习人类语言分析语义. 利用这个 ...