作者归档:admin

GY-MCU90640 python UART 树莓派 范例

import serial, time
import datetime as dt
import numpy as np
import cv2

# function to get Emissivity from MCU
def get_emissivity():
    ser.write(serial.to_bytes([0xA5,0x55,0x01,0xFB]))
    read = ser.read(4)
    return read[2]/100

# function to get temperatures from MCU (Celsius degrees x 100)
def get_temp_array(d):

    # getting ambient temperature
    T_a = (int(d[1540]) + int(d[1541])*256)/100

    # getting raw array of pixels temperature
    raw_data = d[4:1540]
    T_array = np.frombuffer(raw_data, dtype=np.int16)

    return T_a, T_array

# function to convert temperatures to pixels on image
def td_to_image(f):
    norm = np.uint8((f/100 - Tmin)*255/(Tmax-Tmin))
    norm.shape = (24,32)
    return norm

########################### Main cycle #################################
# Color map range
Tmax = 40
Tmin = 20

print ('Configuring Serial port')
ser = serial.Serial ('/dev/serial0')
ser.baudrate = 115200

# set frequency of module to 4 Hz
ser.write(serial.to_bytes([0xA5,0x25,0x01,0xCB]))
time.sleep(0.1)

# Starting automatic data colection
ser.write(serial.to_bytes([0xA5,0x35,0x02,0xDC]))
t0 = time.time()

try:
    while True:
        # waiting for data frame
        data = ser.read(1544)

        # The data is ready, let's handle it!
        Ta, temp_array = get_temp_array(data)
        ta_img = td_to_image(temp_array)

        # Image processing
        img = cv2.applyColorMap(ta_img, cv2.COLORMAP_JET)
        img = cv2.resize(img, (320,240), interpolation = cv2.INTER_CUBIC)
        img = cv2.flip(img, 1)

        text = 'Tmin = {:+.1f} Tmax = {:+.1f} FPS = {:.2f}'.format(temp_array.min()/100, temp_array.max()/100, 1/(time.time() - t0))
        cv2.putText(img, text, (5, 15), cv2.FONT_HERSHEY_SIMPLEX, 0.45, (0, 0, 0), 1)
        cv2.imshow('Output', img)

        # if 's' is pressed - saving of picture
        key = cv2.waitKey(1) & 0xFF
        if key == ord("s"):
            fname = 'pic_' + dt.datetime.now().strftime('%Y-%m-%d_%H-%M-%S') + '.jpg'
            cv2.imwrite(fname, img)
            print('Saving image ', fname)

        t0 = time.time()

except KeyboardInterrupt:
    # to terminate the cycle
    ser.write(serial.to_bytes([0xA5,0x35,0x01,0xDB]))
    ser.close()
    cv2.destroyAllWindows()
    print(' Stopped')

# just in case 
ser.close()
cv2.destroyAllWindows()

转自:https://github.com/vvkuryshev/GY-MCU90640-RPI-Python

AIR10X 合宙屏幕配合ESP32C3

RT
合宙家的屏幕配上合宙家的esp32C3

插上后
上下左右按钮对应的GPIO为

屏幕 摇杆
放置

遥杆

遥杆按钮 ESP32C3
8
13
5
9
按下 4
from machine import Pin
a=Pin(8,Pin.IN,Pin.PULL_UP)
print(a.value())

屏幕

ST7735

m3u8 广告h.264

请务必使用H。264编码 ,两个文件都得使用h.264 使用fmp4 无法跳转

使用标签
#EXT-X-DISCONTINUITY

若使用嵌入图片实时替换则对一个TS文件转码,切记为h.264

添加水印:

ffmpeg -i d20.ts -vf "movie=a.jpeg[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " -c:v libx264 d30.ts
切记编码格式不能用copy 必须手动制定
建议将切片设置为10秒 则插入广告 时间较多

图片在视频的位置为左下角
main_w-overlay_w-10 : 水印在x轴的位置,也可以写成x=main_w-overlay_w-10

main_h-overlay_h-10:水印在y轴的位置

ffmpeg -i d20.ts -c:v libx264  -vf "drawtext=text=首家线上堵车疏通平台上线了 :expansion=normal:fontfile=simkai.ttf: y=h-line_h-10:x=(mod(5*n\,w+tw)-tw): fontcolor=white: fontsize=40: shadowx=2: shadowy=2" d30.ts

下面 从左向右文字显示 白色 字体大小 40 字体simkai.tff文件请拷贝到执行目录

:y=h-line_h-10:x=w-(t-4.5)*w/5.5:从右向左
: y=h-line_h-10:x=(mod(5*n\,w+tw)-tw):从左向右

hevc 的hev1与hvc1

265即 HEVC,在打包成mp4时需要有 codec tag。hev1 or hvc1是两种codec tag,表示mp4容器中hevc流的不同打包方式。Quicktime Player和iOS不支持hev1
默认是hev1,需要使用ffmpeg修改

ffmpeg -i input-hev1.mp4 -c:v libx265 -tag:v hvc1 -c:a copy output-hvc1.mp4

#h.265 fmp4
 ffmpeg -i d1.mp4 -c copy -hls_time 4 -f hls -hls_playlist_type vod  -hls_segment_type fmp4  d.m3u8

#h.264 TS
ffmpeg -i 12.mp4 -vcodec copy -acodec copy -f hls -hls_time 3 -hls_list_size 0 -y m3u8