前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV 摄像头与视频读取并显示

OpenCV 摄像头与视频读取并显示

作者头像
AI异构
发布2020-07-29 15:14:12
1.1K0
发布2020-07-29 15:14:12
举报
文章被收录于专栏:AI异构AI异构

摄像头与视频读取并显示

相关函数说明
保存图像信息的结构体
  • opencv2:CvCapture,操作采用指针
  • opencv3:VideoCapture,操作采用变量
打开到函数
  • opencv2:cvCreateCameraCapture(-1)读入摄像头视频,cvCreateFileCapture("路径")读入视频文件。
  • opencv3:open一个函数搞定,文件和摄像头是不同的重载函数
读取视频流的形式:
  • opencv2:cvQueryFrame(capture)
  • opencv3:<<,经过重载到operate函数。
图像显示:
  • opencv2:在main一开头声明窗口:cvNamedWindow,后面用cvShowImage函数显示
  • opencv3:imshow全部搞定。当然,cvNamedWindow也有它到代替品:namedWindow();
控制帧率
  • opencv2:cvWaitKey
  • opencv3:waitKey
释放保存图像信息到结构体
  • opencv2:cvReleaseCapture()函数
  • opencv3:作为一个变量,显然是由系统释放到,完全不需要管。不过严谨起见,也可以加上一行capture.release();
OpenCV3 参考程序
代码语言:javascript
复制
#include<opencv2/opencv.hpp>
#include<iostream>

using namespace std;
using namespace cv;

int main(int argc,char **argv)
{

    //VideoCapture capture(0); //// 从摄像头读入视频
        VideoCapture capture("test.mp4"); //从本地读入视频
    namedWindow("my vidio",CV_WINDOW_AUTOSIZE);
    //循环显示每一帧
    while(capture.isOpened())
    {
        Mat frame;  //定义一个Mat变量,用于存储每一帧的图像
        capture>>frame; //读取摄像头当前帧并传给frame
        /*中间可以处理摄像头当前帧的图像*/
        imshow("my vidio",frame);  //显示当前帧
        if(waitKey(40) == 27){
            break; //按ESC就退出
        }
    }
        capture.release();
    cv::destroyAllWindows();
    return 0;
}
OpenCV2 参考程序
代码语言:javascript
复制
#include <QCoreApplication>
#include <cv.hpp>
#include <highgui.h>
#include <video.hpp>

using namespace cv;

int main(int argc, char *argv[])
{
    cvNamedWindow("mp4");

    /*CvCapture结构体,保存图像信息,cvCreateCameraCapture(-1)读入摄像头视频,
     *                           cvCreateFileCapture("路径")读入视频文件*/
    CvCapture * capture=cvCreateCameraCapture(-1);

    IplImage* frame;

    while(1)
    {
        //cvQueryFrame(),读入CvCapture结构体指针,将下一帧加载到内存
        frame=cvQueryFrame(capture);
        if(!frame)
            break;

        //cvShowImage()在窗口中显示
        cvShowImage("mp4",frame);
        //cvWaitKey()触发按键、控制帧率
        char c =cvWaitKey(33);
        if(c==27)
            break;
    }
    //cvReleaseCapture()释放结构体指针
    cvReleaseCapture(&capture);
}

参考

[比较opencv2、opencv3关于读取视频文件、摄像头的编程风格]https://blog.csdn.net/qq_34917736/article/details/77427596

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI异构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 摄像头与视频读取并显示
    • 相关函数说明
      • 保存图像信息的结构体
      • 打开到函数
      • 读取视频流的形式:
      • 图像显示:
      • 控制帧率
      • 释放保存图像信息到结构体
    • OpenCV3 参考程序
      • OpenCV2 参考程序
      • 参考
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档