mjpeg --- การบันทึก MJPEG¶
โมดูล mjpeg ใช้สำหรับบันทึกวิดีโอ MJPEG ใช้เพื่อบันทึกคลิปวิดีโอยาวเป็นข้อมูลภาพที่บีบอัดแล้ว สำหรับคลิปสั้นให้ใช้ gif
ตัวอย่างการใช้งาน:
import csi
import mjpeg
import time
# Setup camera.
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.RGB565)
csi0.framesize(csi.QVGA)
csi0.snapshot(time=2000)
# Create the mjpeg object.
m = mjpeg.Mjpeg("example.mjpeg")
# Record for 20 seconds.
start = time.ticks_ms()
while time.ticks_diff(time.ticks_ms(), start) < 20000:
m.add_frame(csi0.snapshot())
# Finalize.
m.close()
คลาส Mjpeg -- เครื่องบันทึก Mjpeg¶
- class mjpeg.Mjpeg(path: str, width: int | None = None, height: int | None = None)¶
สร้างอ็อบเจ็กต์ Mjpeg สำหรับเพิ่มเฟรม
pathคือพาธในระบบไฟล์สำหรับบันทึกไฟล์ MJPEGwidthคือความละเอียดแนวนอนของไฟล์ MJPEG หากไม่ระบุจะใช้ความกว้างของ framebuffer หลักheightคือความละเอียดแนวตั้งของไฟล์ MJPEG หากไม่ระบุจะใช้ความสูงของ framebuffer หลัก- add_frame(image: image.Image, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0, quality: int = 90) None¶
เพิ่ม
imageลงในการบันทึก MJPEG ภาพจะถูกปรับขนาดโดยอัตโนมัติพร้อมรักษาอัตราส่วนภาพให้ตรงกับความละเอียดที่กำหนดตอนสร้างไฟล์ รองรับรูปแบบภาพทุกประเภท เมธอดนี้จะดีคอมเพรส ปรับขนาด/แปลงรูปแบบ และบีบอัดใหม่ตามความจำเป็นroiคือ tuple สี่เหลี่ยม(x, y, w, h)ของimageที่จะคัดลอก ค่าเริ่มต้นคือภาพทั้งหมดrgb_channelคือช่อง RGB (0=R, 1=G, 2=B) ที่จะดึงออกจากภาพต้นฉบับ RGB565 และแสดงในระดับสีเทา-1(ค่าเริ่มต้น) ปิดการดึงช่องalpha(0-255) ควบคุมสัดส่วนการผสมภาพต้นฉบับเข้ากับปลายทาง255คือทึบแสง ค่าที่ต่ำกว่าจะผสมกับพื้นหลังสีดำ0ได้เฟรมสีดำcolor_paletteคือ enum ของ color palette (เช่นimage.PALETTE_RAINBOW) หรือภาพ RGB565 ขนาด 256 พิกเซลที่ใช้เป็นตาราง color lookup บนค่าระดับสีเทาของภาพต้นฉบับ นำไปใช้หลังจากดึงrgb_channelalpha_paletteคือภาพระดับสีเทาขนาด 256 พิกเซลที่ใช้เป็นตาราง alpha lookup โดยปรับalphaแต่ละพิกเซลต้นฉบับตามค่าระดับสีเทา255คือทึบแสง0คือโปร่งใส นำไปใช้หลังจากดึงrgb_channelhintคือ OR เชิงตรรกะของ:image.AREA: ใช้การปรับขนาดแบบ area เมื่อลดขนาดimage.BILINEAR: ใช้การปรับขนาดแบบ bilinearimage.BICUBIC: ใช้การปรับขนาดแบบ bicubicimage.CENTER: จัดกึ่งกลางภาพบนปลายทางimage.HMIRROR: สะท้อนภาพในแนวนอนimage.VFLIP: พลิกภาพในแนวตั้งimage.TRANSPOSE: สลับแกน x/y ของภาพimage.EXTRACT_RGB_CHANNEL_FIRST: ดึงrgb_channelก่อนปรับขนาดimage.APPLY_COLOR_PALETTE_FIRST: ใช้color_paletteก่อนปรับขนาดimage.SCALE_ASPECT_KEEP: ปรับขนาดให้พอดีภายในปลายทางimage.SCALE_ASPECT_EXPAND: ปรับขนาดให้เต็มปลายทาง (ตัดขอบ)image.SCALE_ASPECT_IGNORE: ปรับขนาดให้เต็มปลายทาง (ยืดภาพ)image.ROTATE_90: หมุน 90 องศา (VFLIP | TRANSPOSE)image.ROTATE_180: หมุน 180 องศา (HMIRROR | VFLIP)image.ROTATE_270: หมุน 270 องศา (HMIRROR | TRANSPOSE)
quality(0-100) คือคุณภาพการบีบอัด JPEG ที่ใช้สำหรับภาพต้นฉบับที่ไม่ใช่ JPEG
- write(image: image.Image, roi: Tuple[int, int, int, int] | None = None, rgb_channel: int = -1, alpha: int = 255, color_palette: image.Image | None = None, alpha_palette: image.Image | None = None, hint: int = 0, quality: int = 90) None¶
ชื่อแทนสำหรับ
Mjpeg.add_frame()