参考了一篇关于视频的opencv的csdn
对视频的字符叠加
首先,获取视频的信息
import cv2
video = cv2.VideoCapture("1.mp4") # 打开视频文件
fps = video.get(cv2.CAP_PROP_FPS) # 获取视频文件的帧速率
frame_Count = video.get(cv2.CAP_PROP_FRAME_COUNT) # 获取视频文件的帧数
frame_Width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH)) # 获取视频文件的帧宽度
frame_Height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 获取视频文件的帧高度
# 输出获取到的属性值
print("帧速率:", fps)
print("帧数:", frame_Count)
print("帧宽度:", frame_Width)
print("帧高度:", frame_Height)
视频叠加字符有函数:
# 当前视频播放到第几帧
cv2.putText(frame, "frame: " + str(frame_Num), (0, 100),
cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5)
# 该帧对应着视频的第几秒
cv2.putText(frame, "second: " + str(round(frame_Num / fps, 2)) + "s",
(0, 200), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5)
cv2.imshow("Video", frame) # 在窗口中显示读取到的视频文件
以上是直接叠加视频的信息(帧,秒)到视频上面,ABC同理
cv2.putText(frame, “ABC”,(0, 200), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5)
key = cv2.waitKey(50) # 窗口的图像刷新时间为50毫秒
结尾处
video.release() # 关闭视频文件
cv2.destroyAllWindows() # 销毁显示视频文件的窗口
opencv理解
阈值
在这里,问题直截了当。对于每个像素,应用相同的阈值。如果像素值小于阈值,则将其设置为0,否则将其设置为最大值。
自适应阈值
法基于像素周围的小区域确定像素的阈值
功耗控制
- 调整waitKey()方法中的参数值可以控制视频文件的播放速度。例如,当cv2.waitKey(1)时,视频文件的播放速度非常快;当cv2.waitKey(50)时,就可以减缓视频文件的播放速度。那么,可以减少单位时间树莓派的处理量。
- 关闭板载LED
- 减少运行的进程数量
- 安装lite版本的系统,不带图形界面(opencv需要图形桌面,除非使用远程桌面)
- 减少非必要外设
- cpu降频
- 关闭wifi,使用以太网接口(不确定有无作用,待验证)
测定功耗
使用以上工具直接显示功率
测得:未接HDMI,未运算的情况下功耗为:0.34w~0.36w
关闭树莓派板载LED
将PWR LED设置为GPIO模式 (默认不亮)
echo gpio | sudo tee /sys/class/leds/led1/trigger # 这时候LED设置为GPIO模式了
echo 1 | sudo tee /sys/class/leds/led1/brightness # 灯亮
echo 0 | sudo tee /sys/class/leds/led1/brightness # 灯灭
将PWR LED设置回检测电源连接的模式(初始模式)
echo input | sudo tee /sys/class/leds/led1/trigger # 最后调回此模式,作为指示灯
将ACT LED设置为GPIO模式
echo gpio | sudo tee /sys/class/leds/led1/trigger
echo 1 | sudo tee /sys/class/leds/led0/brightness # 灯亮
echo 0 | sudo tee /sys/class/leds/led0/brightness # 灯灭
将ACT LED设置回初始模式
echo cpu0 | sudo tee /sys/class/leds/led0/trigger # 最后调回此模式,作为指示灯
其他方法:
电源指示灯
echo "# Disable the PWR LED" | sudo tee -a /boot/config.txt
echo "dtparam=pwr_led_trigger=none" | sudo tee -a /boot/config.txt
echo "dtparam=pwr_led_activelow=off" | sudo tee -a /boot/config.txt
以太网指示灯
echo "# Disable Ethernet LEDs" | sudo tee -a /boot/config.txt
echo "dtparam=eth_led0=14" | sudo tee -a /boot/config.txt
echo "dtparam=eth_led1=14" | sudo tee -a /boot/config.txt
关闭板载蓝牙
echo "dtoverlay=pi3-disable-bt" | sudo tee -a /boot/config.txt
禁用WiFi(此次勿用)
echo "dtoverlay=pi3-disable-wifi" | sudo tee -a /boot/config.txt
可能
dtoverlay=disable-wifi
dtoverlay=disable-bt