两个video:
一个是图像/视频采集,一个是metadata采集
2. 相关工具库安装
安装opencv
pip3 install opencv-python-headless4.8.0.76
pip3 install opencv-python4.8.0.76
pip3 install opencv-contrib-python==4.8.0.76
验证是否安装成功
cat@lubancat:~$ python3
Python 3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0] on linux
Type “help”, “copyright”, “credits” or “license” for more information.import cv2 as cv
print(cv.__version__)
4.8.0
3. 摄像头拍照
import cv2
import time
# 帧宽和高度
width = 640
height = 480
num = 1
# 创建一个VideoCapture对象,并打开系统默认的摄像头(也可以打开视频或者指定的设备)
cap = cv2.VideoCapture(9)
# 不能打开摄像头
if not cap.isOpened():
raise RuntimeError('Could not open camera.')
# 设置帧宽和高度
cap.set(cv2.CAP_PROP_FRAME_WIDTH, width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
while(cap.isOpened()):
time.sleep(2)
# 返回两个参数,ret表示是否正常打开,frame是图像数组,一帧
ret,frame = cap.read()
# 窗口显示,名为Lubancat_Camera_test
cv2.imshow("Lubancat_Camera_test", frame)
# 延迟1ms,并根据键盘输入返回值val,是板卡接的键盘
val = cv2.waitKey(1) & 0xFF
print("=======================================")
# 第一个参数是保存为的图片名,第二个参数为待保存图像,jpeg格式
cv2.imwrite("photo" + str(num) + ".jpg", frame)
print("width = ", width)
print("height = ", height)
print("success to save photo: "'photo' + str(num)+".jpg")
print("=======================================")
break
# 释放摄像头
cap.release()
# 关闭窗口
cv2.destroyAllWindows()
执行程序:
python3 camera_photo.py
可以通过下面方法获取摄像头的video编号
import subprocess
def get_camera_device():
'''获取可用的摄像头'''
try:
output = subprocess.check_output("v4l2-ctl --list-devices", shell=True).decode()
print(output)
index = output.index('HD video')
end_str = output[index:]
lines = end_str.split('\n')
for line in lines:
if "/dev/video" in line: # 根据摄像头名称进行匹配
index = line.index('/dev/video')
device = line[index + len('/dev/video'):]
return int(device)
except subprocess.CalledProcessError as e:
print("Error:", e)
return -1
3.1. 录制视频
import os
import cv2
import time
# 帧宽,高度,帧率
width = 640
height = 480
fps = 25.0
# 创建一个VideoCapture对象,并打开系统默认的摄像头
video = cv2.VideoCapture(9)
# 设置帧宽和高度
video.set(cv2.CAP_PROP_FRAME_WIDTH, width)
video.set(cv2.CAP_PROP_FRAME_HEIGHT, height)
# 定义视频文件的写入格式,未压缩的YUV颜色编码类型(使用该格式保存的视频文件很大,需要注意下),有些格式可能不支持,编码器失败,需要安装相关库
# fourcc = cv2.VideoWriter_fourcc(*'MJPG')
fourcc = cv2.VideoWriter_fourcc('I','4','2','0')
# 用于实现多张图像保存成视频文件,第一个参数是需要保存的视频文件名称,第二个函数是编解码器的代码,
# 第三个参数为保存视频的帧率,第四个参数是保存的视频文件的尺寸,一定要与图像的尺寸相同
# out = cv2.VideoWriter('output.mp4',fourcc, fps, (width,height))
out = cv2.VideoWriter('output.avi',fourcc, fps, (width,height))
def main():
count = 0
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/b8684062907e4f23cb6c29af10e372fa.png)
![img](https://img-blog.csdnimg.cn/img_convert/402c748d6a8dee8f6b24c981500a81aa.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/e89277a1572168301d88caee073879e6.png)
![img](https://img-blog.csdnimg.cn/img_convert/d6ac2ff10c14aed36e1a0f44522c6132.png)
![img](https://img-blog.csdnimg.cn/img_convert/a0d0c66d23c8b1440eb63686e5188fd0.png)
![img](https://img-blog.csdnimg.cn/img_convert/baf82377a098b10451d0b0432ff0331d.png)
![](https://img-blog.csdnimg.cn/img_convert/6ab28148292e3aca75bcdc6f145e2b1a.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!
95%以上嵌入式&物联网开发知识点,真正体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!