当前位置:   article > 正文

OpenCV(视频加载与摄像头使用)_opencv 摄像头

opencv 摄像头

目录

1、VideoCapture类

2、视频属性get() 

3、视屏文件保存


1、VideoCapture类

2、视频属性get() 

3、视屏文件保存

  1. //视频的读取保存
  2. int test3()
  3. {
  4. VideoCapture video;
  5. //video.open("F:/testMap/lolTFT.mp4");//读取视频
  6. video.open(0);//读取摄像头
  7. if (!video.isOpened())
  8. {
  9. cout << "打开失败,请检查摄像头或文件" << endl;
  10. return -1;
  11. }
  12. cout << "视频帧率="<<video.get(CAP_PROP_FPS) << endl;
  13. cout << "视频宽度=" << video.get(CAP_PROP_FRAME_WIDTH) << endl;
  14. Mat img;
  15. video >> img;//获取图像
  16. //检测是否成功获取图像
  17. if (img.empty())//判断有没有读取图像成功
  18. {
  19. cout << "没有获取到图像"<< endl ;
  20. return -1;
  21. }
  22. bool isColpr = (img.type() == CV_8UC3);//判断相机(视频)类型是否为彩色
  23. VideoWriter writer;
  24. int codec = VideoWriter::fourcc('M', 'J','P','G'); //选择编码格式
  25. double fps = 25.0;//设置视频帧率
  26. string filename = "F:/testMap/live.avi";//保存的视频文件名称
  27. writer.open(filename,codec,fps,img.size(),true);//创建保存视频文件的视频流
  28. if (!writer.isOpened())//判断视频流是否创建成功
  29. {
  30. cout << "打开视频文件失败,请确实是否为合法输入" << endl;
  31. return -1;
  32. }
  33. //通过摄像头保存视屏
  34. while (1)
  35. {
  36. //检测是否执行完毕
  37. if (!video.read(img))//判断能都继续从摄像头或者视频文件中读出一帧图像
  38. {
  39. cout << "摄像头断开连接或者视频读取完成" << endl;
  40. break;
  41. }
  42. writer.write(img); //把图像写入视频流
  43. writer << img;
  44. imshow("Live", img); //显示图像
  45. char c = waitKey(50);
  46. if (c == 27)//按ESC案件退出视频保存
  47. break;
  48. }
  49. //读取视频播放
  50. //while (true)
  51. //{
  52. // Mat frame;
  53. // video >> frame;//把视频当前帧传给frame
  54. // if (frame.empty())
  55. // {
  56. // break;
  57. // }
  58. // imshow("video",frame);
  59. // uchar c = waitKey(1000 / video.get(CAP_PROP_FPS) /2);//2倍速播放
  60. // //按q退出
  61. // if (c == 'q')
  62. // {
  63. // break;
  64. // }
  65. //}
  66. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号