OpenCV 2.4.9显示视频

通过OpenCV打开本地视频文件,本地USB UVC摄像头以及网络摄像头(通过RTSP协议)的Demo。

RTSP的uri格式【rtsp://[user:password@]ip_address/[path/]file】。


#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;

#pragma comment(lib, "opencv_core249d.lib")
#pragma comment(lib, "opencv_highgui249d.lib")
#pragma comment(lib, "opencv_imgproc249d.lib")

int main()
{
 cout << "OpenCV version: " << CV_VERSION << endl;

 //【1】读入视频
 VideoCapture cap;
 //【1a】从视频文件载入视频
 //cap.open("VID_20151206_095030.mp4");
 //【1b】从本地安装的摄像头载入视频
 cap.open(0);
 //【1c】从网络摄像头载入视频
 //cap.open("rtsp://218.204.223.237:554/live/1/0547424F573B085C/gsfp90ef4k0a6iap.sdp"); //公开的RTSP测试服务器
 //cap.open("rtsp://218.204.223.237:554/live/1/66251FC11353191F/e7ooqwcfbqjoo80j.sdp"); //公开的RTSP测试服务器 拱北口岸珠海过澳门大厅
 //cap.open("rtsp://218.204.223.237:554/live/1/67A7572844E51A64/f68g2mj7wjua3la7.sdp"); //公开的RTSP测试服务器 横琴口岸入境大厅
 //cap.open("rtsp://admin:@192.168.254.136:10554/tcp/av0_1"); //本地网络中的摄像头,我用来测试的摄像头,但是获取不到open的时候有问题;通过VLC能打开,证明uri没问题。

 if (!cap.isOpened())
 {
  cout << "摄像头不能打开!" << endl;
  cout << "按任意键退出程序!" << endl;
  waitKey(0);
  return -1;
 }

 namedWindow("实时视频");
 Mat frame; //定义一个Mat变量,用于存储每一帧的图像

 //【2】循环显示每一帧
 while(waitKey(33) != 27) //延时33毫秒,若检测到ESC被按下,则退出循环
 {
  cap >> frame; //读取当前帧
  if (frame.data == NULL)
  {
   cout << "丢失图像!" << endl;
   CvFont font = fontQt("Times");
   //addText(frame, "图像丢失", Point(10,10),font);
   //imshow("实时视频", frame); //显示当前帧
  }
  else
  {
   imshow("实时视频", frame); //显示当前帧
  }
 }

 cout << "按任意键退出程序!" << endl;
 waitKey(0);
 return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值