关于OpenCV调用摄像头及视频和图片的保存
Posted 小胆胆20
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于OpenCV调用摄像头及视频和图片的保存相关的知识,希望对你有一定的参考价值。
打开VS创建好新项目
输入以下代码
#include<opencv2\\opencv.hpp>
#include<iostream>
#include<string>
using namespace cv;
using namespace std;
string writePath = "D:/WJ/"; //视频和图片的保存地址
int main(int argc, char** argv)
VideoCapture cap(0); //0代表电脑默认摄像头
VideoWriter writer("D:/WJ/test.avi", cv::VideoWriter::fourcc('M', 'J', 'P', 'G'), 25.0, Size(640, 480));
string name;
int i = 0;
while (1)
Mat frame, gray;
cap >> frame;
if (32 == waitKey(20)) //空格拍照
name = writePath + to_string(i) + ".jpg";
imwrite(name, frame);
cout << name << endl;
i++;
cap >> frame;
writer << frame;
imshow("Hello", frame);
if (97 == waitKey(10)) //'Esc'退出
break;
return 0;
运行结果如下
点击相应按键进行拍摄和保存
一、关于waitkey()的详细解释
1. waitKey()–是在一个给定的时间内(单位ms)等待用户按键触发;
如果用户没有按下键,则继续等待 (循环)
常见 : 设置 waitKey(0) , 则表示程序会无限制的等待用户的按键事件
一般在 imgshow 的时候 , 如果设置 waitKey(0) , 代表按任意键继续
2. 显示视频时,延迟时间需要设置为 大于0的参数
delay > 0时 , 延迟 ”delay”ms , 在显示视频时这个函数是有用的 ,
用于设置在显示完一帧图像后程序等待 ”delay”ms 再显示下一帧视频 ;
如果使用 waitKey(0) 则只会显示第一帧视频
二、视频的编解码方式有:
cv2.VideoWriter_fourcc('M', 'P', '4', '2') MPEG-4.2编码 .mp4 可指定结果视频的大小
cv2.VideoWriter_fourcc('X','2','6','4') MPEG-4编码 .mp4 可指定结果视频的大小
cv2.VideoWriter_fourcc('I', '4', '2', '0')该参数是YUV编码类型,文件名后缀为.avi 广泛兼容,但会产生大文件
cv2.VideoWriter_fourcc('P', 'I', 'M', 'I')该参数是MPEG-1编码类型,文件名后缀为.avi
cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')该参数是MPEG-4编码类型,文件名后缀为.avi,可指定结果视频的大小
cv2.VideoWriter_fourcc('T', 'H', 'E', 'O')该参数是Ogg Vorbis,文件名后缀为.ogv
cv2.VideoWriter_fourcc('F', 'L', 'V', '1')该参数是Flash视频,文件名后缀为.flv
使用opencv去操作树莓派摄像头保存图片和视频
利用树莓派的摄像头去学习opencv的基本操作 —— 保存图片和视频
1、使用Opencv去控制树莓派的摄像头拍照并保存到本地,主要使用cv2和numpy库
#!/usr/bin/python3 # -*- coding:utf-8 -*- import cv2 import numpy #初始化摄像头 camera = cv2.VideoCapture(0) #读取图像 ret,img = camera.read() #转换为灰度图像 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #保存图像 cv2.imwrite(‘img.jpg‘,img) cv2.imwrite(‘gray.jpg‘,gray) #释放摄像头 camera.release() cv2.destroyAllWindwos()
2、记录一段视频到本地
#!/usr/bin/python3 # -*- coding:utf-8 -*- #保存一段视频到本地 import cv2 import numpy #初始化摄像头 camera = cv2.VideoCapture(0) # 设置编码格式 fourcc = cv2.VideoWriter_fourcc(*‘XVID‘) # mpeg4编码 #设置帧频 fps =24 #设置分辨率 framesize = (640,480) #设置摄像头输出 out = cv2.VideoWriter(‘output.avi‘,fourcc,fps,framesize) while True: ret , frame = camera.read() gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) #写数据到本地 out.write(frame) if cv2.waitKey(1) & 0xff == ord(‘q‘) : # 按下q退出循环 break #释放资源 camera.release() out.release() cv2.destroyAllWindows()
以上是关于关于OpenCV调用摄像头及视频和图片的保存的主要内容,如果未能解决你的问题,请参考以下文章
opencv-python——2(颜色分割(RGBHSV)读取摄像头和视频并保存)
javacpp-opencv图像处理系列:国内车辆牌照检测识别系统(万份测试车牌识别准确率99.7%以上,单次平均耗时39ms)