Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the simply-static domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/wp-includes/functions.php on line 6121
树莓派 – 第 5 页

light led

import RPi.GPIO as GPIO   #导入树莓派提供的python模块
import time   #导入时间包,用于控制闪烁
GPIO.setmode(GPIO.BCM)   #设置GPIO模式,BCM模式在所有数码派通用
GPIO.setup(26, GPIO.OUT)   #设置GPIO18为电流输出
while True:
    GPIO.output(26, GPIO.HIGH)   #GPIO18 输出3.3V
    time.sleep(1)   #程序控制流程睡眠0.05秒
    GPIO.output(26, GPIO.LOW)    #GPIO18 输出0V
    time.sleep(1)   #程序控制流程睡眠0.05秒

利用python将延时摄像图片自动合成为短视频

利用python实现延时摄像图片的视频化,也就是将图片合成为视频:

import cv2
import glob
def resize(img_array, align_mode):
    _height = len(img_array[0])
    _width = len(img_array[0][0])
    for i in range(1, len(img_array)):
        img = img_array[i]
        height = len(img)
        width = len(img[0])
        if align_mode == 'smallest':
            if height < _height:
                _height = height
            if width < _width:
                _width = width
        else:
            if height > _height:
                _height = height
            if width > _width:
                _width = width
    for i in range(0, len(img_array)):
        img1 = cv2.resize(img_array[i], (_width, _height), interpolation=cv2.INTER_CUBIC)
        img_array[i] = img1
    return img_array, (_width, _height)
def images_to_video(path):
    img_array = []
    for filename in glob.glob(path+'/*.jpg'):
        img = cv2.imread(filename)
        if img is None:
            print(filename + " is error!")
            continue
        img_array.append(img)
    # 图片的大小需要一致
    img_array, size = resize(img_array, 'largest')
    fps = 5
    out = cv2.VideoWriter('/Users/Downloads/中转文件夹/2022-02-20-03.jpg/demo.avi', cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
    for i in range(len(img_array)):
        out.write(img_array[i])
    out.release()
def main():
    path = "/Users/Downloads/中转文件夹/2022-02-20-03.jpg/"
    images_to_video(path)
if __name__ == "__main__":
    main()

以上代码可能会重复将jpg文件编入视频,改进如下:

import cv2
import glob
import re
def resize(img_array, align_mode):
    _height = len(img_array[0])
    _width = len(img_array[0][0])
    for i in range(1, len(img_array)):
        img = img_array[i]
        height = len(img)
        width = len(img[0])
        if align_mode == 'smallest':
            if height < _height:
                _height = height
            if width < _width:
                _width = width
        else:
            if height > _height:
                _height = height
            if width > _width:
                _width = width
    for i in range(0, len(img_array)):
        img1 = cv2.resize(img_array[i], (_width, _height), interpolation=cv2.INTER_CUBIC)
        img_array[i] = img1
    return img_array, (_width, _height)
def images_to_video(path):
    img_array = []
    jpgfile=glob.glob(path+'/*.jpg')
    ordjpgfile=sorted(jpgfile,key = str .lower)
    for filename in ordjpgfile:
        img = cv2.imread(filename)
        if img is None:
            print(filename + " is error!")
            continue
        img_array.append(img)
    # 图片的大小需要一致
    img_array, size = resize(img_array, 'largest')
    fps = 10
    out = cv2.VideoWriter('/Users/Downloads/2022/demo.avi', cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
    for i in range(len(img_array)):
        out.write(img_array[i])
    out.release()
def main():
    path = "/Users/Downloads/2022/"
    images_to_video(path)
if __name__ == "__main__":
    main()

自动根据时间生成文件名

import cv2
import glob
import re
def resize(img_array, align_mode):
    _height = len(img_array[0])
    _width = len(img_array[0][0])
    for i in range(1, len(img_array)):
        img = img_array[i]
        height = len(img)
        width = len(img[0])
        if align_mode == 'smallest':
            if height < _height:
                _height = height
            if width < _width:
                _width = width
        else:
            if height > _height:
                _height = height
            if width > _width:
                _width = width
    for i in range(0, len(img_array)):
        img1 = cv2.resize(img_array[i], (_width, _height), interpolation=cv2.INTER_CUBIC)
        img_array[i] = img1
    return img_array, (_width, _height)
def images_to_video(path):
    img_array = []
    jpgfile=glob.glob(path+'/*.jpg')
    ordjpgfile=sorted(jpgfile,key = str .lower)
    for filename in ordjpgfile:
        img = cv2.imread(filename)
        if img is None:
            print(filename + " is error!")
            continue
        img_array.append(img)
    aviname=str(ordjpgfile[0])[-23:-13]+'.avi'
    print(aviname)
    # 图片的大小需要一致
    img_array, size = resize(img_array, 'largest')
    fps = 10
    out = cv2.VideoWriter('/home/peter/2022/'+aviname, cv2.VideoWriter_fourcc(*'DIVX'), fps, size)
    for i in range(len(img_array)):
        out.write(img_array[i])
    out.release()
def main():
    path = "/home/peter/2022"
    images_to_video(path)
if __name__ == "__main__":
    main()

利用rsync远程同步文件

解决已存在文件等复杂问题

rsync pi@192.168.2.145:/home/pi/2022/2022-03-31/ /home/peter/下载/2022/2022-03-31

对于非22端口,则需重新指定端口才能同步

rsync -aP "-e ssh -p 20123" peter@1.tcp.hk.cpolar.cn:/home/pi/ /Users/Downloads/

如果需要复制特定文件组,也就是需要增加“*”等通配符,此时需要将“”才能正常同步,如下:

rsync -aP "-e ssh -p 20123" "peter@1.tcp.hk.cpolar.cn:/home/pi/2022-03-31*" /Users/Downloads/

网站备份

rsync -aP pi@192.168.0.101:/var/www/ /Users/Downloads/roown.com/
需求:公司有两台备份服务器,一主一从,每天晚上8点开始从服务器就开始同步主服务上的一些数据,但是rsync总会断开连接,尝试了好多方法都没有用,写了个脚本临时解决这个问题,如下
#!/bin/bash
rsync -avzP --timeout=60 -e "ssh -p X" X.X.X.X:/kejiandata/streams/tarena/streams/* /h
zdata/streams/
while ((1 < 100));do
    ps aux | grep /kejiandata/streams/tarena/ | grep rsync | grep timeout
    if [ `echo $?` -eq 1 ];then
        rsync -avzP --timeout=60 -e "ssh -p X" X.X.X.X:/kejiandata/streams/tarena/stre
ams/* /hzdata/streams/
    fi
    sleep 30
    if [ `date +"%H%M"` -ge 0830 ];then
        exit
    fi
done

shell脚本批量生成目录

需要在Linux环境中定期批量生成年月日的日期目录,这样,相关的文件可以按照日期类别放到对应的目录中
脚本如下所示:

#!/bin/bash
images_path="/usr/local/images"
TDATE=$(date -d next-day +%Y-%m-%d)
Next_DATE=$(date -d next-month +%Y-%m-%d)
i=0
until [[ $day == $Next_DATE ]]
do
        day=$(date -d "$TDATE $i days" +%Y-%m-%d)
        mkdir -p ${images_path}/$(date +"%Y")/$day/
        ((i++))
done

如果想指定创建日期目录可以如下所示:
创建2018-01-01到2018-02-15的日期目录:

#!/bin/bash
images_path=/wxdk_images
i=0
until [[ $day == "2018-02-15" ]]
do
        day=$(date -d "2018-01-01 $i days" +%Y-%m-%d)
        mkdir -p ${images_path}/$(date +"%Y")/$day/
        ((i++))
done

https://www.cnblogs.com/blogjun/articles/8251530.html