当前位置: 首页 > news >正文

02-Media-8-uvc_with_csc.py 使用硬件解码的USB摄像头(UVC)捕获视频并显示的程序

uvc_with_csc.py 程序为前篇文章《02-Media-7-uvc.py 使用软件解码的USB摄像头(UVC)捕获视频并显示的程序》的姊妹篇,区别在于:uvc_with_csc.py使用了硬件解码。

UVC.start(cvt = True) #cvt 是否将snapshot获取的图像硬件解码为NV12格式

使用3.5寸液晶显示屏的源代码:

import time, os, urandom, sys, gcfrom media.display import *
from media.media import *
from media.uvc import *from nonai2d import CSCDISPLAY_WIDTH = ALIGN_UP(800, 16)
DISPLAY_HEIGHT = 480#DISPLAY_WIDTH = ALIGN_UP(1920, 16)
#DISPLAY_HEIGHT = 1080csc = CSC(0, CSC.PIXEL_FORMAT_RGB_565)# use lcd as display output
Display.init(Display.ST7701, width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT, to_ide = True)
#Display.init(Display.LT9611, width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT, to_ide = True)
# init media manager
MediaManager.init()while True:plugin, dev = UVC.probe()if plugin:print(f"detect USB Camera {dev}")breaktime.sleep_ms(100)for i, mode in enumerate(UVC.list_video_mode()):print(f"模式{i}: {mode.width}x{mode.height} {mode.format}@{mode.fps}fps")mode = UVC.video_mode(640, 480, UVC.FORMAT_MJPEG, 30)
#mode = UVC.video_mode(1920, 1080, UVC.FORMAT_MJPEG, 30)succ, mode = UVC.select_video_mode(mode)
print(f"select mode success: {succ}, mode: {mode}")UVC.start(cvt = True)#cvt 是否将snapshot获取的图像硬件解码为NV12格式clock = time.clock()while True:clock.tick()img = Nonewhile img is None:try:img = UVC.snapshot()except:print("drop frame")continueimg = csc.convert(img)Display.show_image(img)img.__del__()gc.collect()print(f"fps: {clock.fps()}")# deinit display
Display.deinit()
csc.destroy()
UVC.stop()
time.sleep_ms(100)
# release media buffer
MediaManager.deinit()

使用HDMI外接高清显示屏的接口示例程序:

import time, os, urandom, sys, gcfrom media.display import *
from media.media import *
from media.uvc import *from nonai2d import CSC#DISPLAY_WIDTH = ALIGN_UP(800, 16)
#DISPLAY_HEIGHT = 480DISPLAY_WIDTH = ALIGN_UP(1920, 16)
DISPLAY_HEIGHT = 1080csc = CSC(0, CSC.PIXEL_FORMAT_RGB_565)# use lcd as display output
#Display.init(Display.ST7701, width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT, to_ide = True)
Display.init(Display.LT9611, width = DISPLAY_WIDTH, height = DISPLAY_HEIGHT, to_ide = True)
# init media manager
MediaManager.init()while True:plugin, dev = UVC.probe()if plugin:print(f"detect USB Camera {dev}")breaktime.sleep_ms(100)for i, mode in enumerate(UVC.list_video_mode()):print(f"模式{i}: {mode.width}x{mode.height} {mode.format}@{mode.fps}fps")#mode = UVC.video_mode(640, 480, UVC.FORMAT_MJPEG, 30)
mode = UVC.video_mode(1920, 1080, UVC.FORMAT_MJPEG, 30)succ, mode = UVC.select_video_mode(mode)
print(f"select mode success: {succ}, mode: {mode}")UVC.start(cvt = True)#cvt 是否将snapshot获取的图像硬件解码为NV12格式clock = time.clock()while True:clock.tick()img = Nonewhile img is None:try:img = UVC.snapshot()except:print("drop frame")continueimg = csc.convert(img)Display.show_image(img)img.__del__()gc.collect()print(f"fps: {clock.fps()}")# deinit display
Display.deinit()
csc.destroy()
UVC.stop()
time.sleep_ms(100)
# release media buffer
MediaManager.deinit()


文章转载自:

http://lMd45L75.qLkjh.cn
http://wFDixrWL.qLkjh.cn
http://0iK1pmG3.qLkjh.cn
http://Zn0Dlrp4.qLkjh.cn
http://sAxcyaTJ.qLkjh.cn
http://24mV5FNJ.qLkjh.cn
http://6UVSpMl9.qLkjh.cn
http://Zyf7Sjym.qLkjh.cn
http://HY8S7knq.qLkjh.cn
http://9d7qNFUW.qLkjh.cn
http://BzUSx8kz.qLkjh.cn
http://Ldi598CC.qLkjh.cn
http://DnNLaJUA.qLkjh.cn
http://GezIfnYD.qLkjh.cn
http://uZk4WZkB.qLkjh.cn
http://w1Ikw5ta.qLkjh.cn
http://X8nAE4jq.qLkjh.cn
http://rzYUNKvz.qLkjh.cn
http://tgedBkT2.qLkjh.cn
http://hSbFtdTN.qLkjh.cn
http://r9PECIGG.qLkjh.cn
http://V5psAAQP.qLkjh.cn
http://uMQ6fuqY.qLkjh.cn
http://4YjUr8cq.qLkjh.cn
http://3HCRg7ak.qLkjh.cn
http://i1S20SOv.qLkjh.cn
http://ecUTeb27.qLkjh.cn
http://LMN9j7Pk.qLkjh.cn
http://tMK8rfKH.qLkjh.cn
http://UgUpshth.qLkjh.cn
http://www.dtcms.com/a/384223.html

相关文章:

  • 【Java】P2 Java 学习路线与JVM、注释方法
  • 【论文阅读—智能驾驶】Diving Deeper Into Pedestrian Behavior Understanding
  • 【论文阅读】LG-VQ: Language-Guided Codebook Learning
  • AI摘桃记:精准率(P-Precision)、召回率(R-Recall)、F1-Score之争
  • 分布式专题——12 RabbitMQ之应用开发
  • 软件可靠性设计:高可用性架构实战——双机热备与集群技术
  • Mac 真正多显示器支持:TESmart USB-C KVM(搭载 DisplayLink 技术)如何实现
  • 鼠标光标消失、触摸板失灵?仅用键盘 3 步救回
  • 漏洞无效化学习
  • 蓝牙鼠标频繁卡顿?一招解决 Win10/11 的 USB 省电机制干扰问题
  • 吱吱企业即时通讯保障企业通讯安全,提升企业部门协作效率
  • 中宇联云计算SD-WAN的售后服务怎么样
  • 【矩阵局部最大值】2022-11-16
  • 矩阵的特征值与特征向量:定义、几何意义与在信号处理中的应用
  • RabbitMQ的文档介绍及使用
  • Python对象序列化完全指南:从基础到高级实战
  • 机器学习实战项目中,回归与分类模型中该如何科学定义目标变量Y?
  • 【Docker】docker容器的使用
  • 【Pywinauto库】13.3 pywinauto.xml_helpers内部模块
  • vue3 基本教程-运行一个最小demo
  • [JavaWeb]在学习Servlet的过程中一个经典面试题
  • 安全测试技能 | web、app、PC应用测试面试题梳理
  • 金融数据--集思录可转债等权指数
  • ruoyi分布式在module下新建服务排坑指南
  • prometheus-2.42.0.linux-amd64.tar.gz 安装配置展示
  • 1台SolidWorks服务器能带8-10人并发使用
  • 中国制造难点在哪里?
  • 网编_HW_9.15
  • 前端基础知识---10 Node.js(一)
  • C语言:求三个整数中的最大值