赞
踩
当我们想要使用opencv对视频图像进行处理时,往往第一步便是需要调用电脑摄像头,下面博主将提供两种版本的代码(含详细注释),帮助大家学习如何使用Opencv调用电脑摄像头进行视频录制并保存:
1. 从相机中读取视频
- /*从相机中读取视频*/
- #include <opencv2/imgcodecs.hpp>
- #include <opencv2/highgui.hpp>
- #include <opencv2/imgproc.hpp>
- #include <iostream>
-
- using namespace cv;
- using namespace std;
-
- int main()
- {
- //打开捕获器(0-系统默认摄像头)
- VideoCapture cap(0);
- Mat frame;
- //打开失败
- if (!cap.isOpened()) {
- cerr << "Cannot open camera";
- return -1;
- }
- //打开成功
- while (true) {
- //读取视频帧
- cap.read(frame);
- //显示图像
- imshow("Pig", frame);
- //监听键盘,按任意键退出
- if (waitKey(5) >= 0)
- break;
- }
- cap.release(); //释放捕获器
- return 0;
- }
-
2. 从文件中读取视频
- /*从文件中读取视频*/
- #include <opencv2/imgcodecs.hpp>
- #include <opencv2/highgui.hpp>
- #include <opencv2/imgproc.hpp>
- #include <iostream>
-
- using namespace cv;
- using namespace std;
-
- int main()
- {
- //视频文件所在路径
- String path = "vtest001.avi";
- //打开捕获器
- VideoCapture cap(path);
- Mat frame;
- //打开失败
- if (!cap.isOpened()) {
- cerr << "Cannot open video";
- return -1;
- }
- //打开成功
- while (true) {
- //读取视频帧
- cap.read(frame);
- //显示图像
- imshow("Pig", frame);
- //监听键盘,按任意键退出
- if (waitKey(5) >= 0)
- break;
- }
- cap.release(); //释放捕获器
- return 0;
- }
-
3. 保存视频
- /*保存视频*/
- #include <opencv2/imgcodecs.hpp>
- #include <opencv2/highgui.hpp>
- #include <opencv2/imgproc.hpp>
- #include <iostream>
-
- using namespace cv;
- using namespace std;
-
- int main()
- {
- //打开捕获器(0-系统默认摄像头)
- VideoCapture cap(0);
- Mat frame;
- //创建视频写入对象并定义保存格式
- VideoWriter videoWriter("out001.avi", videoWriter.fourcc('X', 'I', 'V', 'D'),25 ,Size(100, 100));
- //打开失败
- if (!cap.isOpened()) {
- cerr << "Cannot open camera";
- return -1;
- }
- //打开成功
- while(true)
- {
- //逐帧读取
- cap.read(frame);
- //显示视频画面
- imshow("test",frame);
- //进行视频保存
- videoWriter.write(frame);
- //监听键盘,按任意键退出
- if (waitKey(5) >= 0)
- break;
- }
- cap.release(); //释放捕获器
- videoWriter.release(); //释放视频写入对象
- return 0;
- }
1. 从相机中读取视频
- '''从相机中读取视频'''
- import numpy as np #导入科学计算库numpy
- import cv2 as cv #导入opencv-python
- #打开捕获器(0-系统默认摄像头)
- cap = cv.VideoCapture(0)
- #打开失败
- if not cap.isOpened():
- print("Cannot open camera")
- exit()
- #打开成功
- while True:
- #如果正确读取帧,ret为True
- ret, frame = cap.read()
- #读取失败,则退出循环
- if not ret:
- print("Can't receive frame (stream end?). Exiting ...")
- break
- #图像处理-转换为灰度图
- gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
- #显示画面
- cv.imshow('frame', gray)
- #获取键盘按下那个键
- key_pressed = cv.waitKey(60)
- #如果按下esc键,就退出循环
- if key_pressed == 27:
- break
- cap.release() #释放捕获器
- cv.destroyAllWindows() #关闭图像窗口
2. 从文件中读取视频
- '''从文件中读取视频'''
- import numpy as np #导入科学计算库numpy
- import cv2 as cv #导入opencv-python
- #打开捕获器('vtest.avi'-视频文件所在路径)
- cap = cv.VideoCapture('vtest.avi')
- #逐帧处理图像
- while cap.isOpened():
- #如果正确读取帧,ret为True
- ret, frame = cap.read()
- #读取失败,则退出循环
- if not ret:
- print("Can't receive frame (stream end?). Exiting ...")
- break
- #图像处理-转换为灰度图
- gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
- #显示画面
- cv.imshow('frame', gray)
- #获取键盘按下那个键
- key_pressed = cv.waitKey(60)
- #如果按下esc键,就退出循环
- if key_pressed == 27:
- break
- cap.release() #释放捕获器
- cv.destroyAllWindows() #关闭图像窗口
3. 保存视频
- '''保存视频'''
- import numpy as np #导入科学计算库numpy
- import cv2 as cv #导入opencv-python
- #打开捕获器(0-系统默认摄像头)
- cap = cv.VideoCapture(0)
- # 定义编解码器并创建VideoWriter对象
- fourcc = cv.VideoWriter_fourcc(*'XVID')
- out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480)) #视频保存格式
- while cap.isOpened():
- #如果正确读取帧,ret为True
- ret, frame = cap.read()
- #读取失败,则退出循环
- if not ret:
- print("Can't receive frame (stream end?). Exiting ...")
- break
- #图像处理-翻转图像
- frame = cv.flip(frame, 0)
- #保存图像
- out.write(frame)
- #图像显示
- cv.imshow('frame', frame)
- #获取键盘按下那个键
- key_pressed = cv.waitKey(60)
- #如果按下esc键,就退出循环
- if key_pressed == 27:
- break
- cap.release() #释放捕获器
- out.release() #关闭视频保存
- cv.destroyAllWindows() #关闭图像窗口
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。