首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有一种方法可以在不捕获很多图片的情况下一次处理一个saveFrame?

在不捕获很多图片的情况下一次处理一个saveFrame,可以考虑使用视频流处理技术。视频流处理允许你在视频数据到达时即时处理每一帧,而不是先捕获所有帧再处理。这种方法可以显著减少内存使用和处理时间。

基础概念

视频流处理涉及以下几个核心概念:

  1. 视频帧:视频是由一系列连续的静态图像(帧)组成的。
  2. 编码和解码:视频数据通常会被压缩以减少存储和传输所需的带宽。编码是将原始视频数据转换为压缩格式的过程,解码则是将压缩的视频数据转换回原始格式的过程。
  3. 视频流:视频数据以连续的流形式传输和处理。

相关优势

  • 实时性:可以即时处理每一帧,适用于需要实时反馈的应用,如视频监控、游戏直播等。
  • 内存效率:不需要存储所有帧,只需处理当前帧,大大减少了内存使用。
  • 处理速度:可以快速处理每一帧,适用于高帧率视频。

类型

视频流处理可以分为以下几种类型:

  1. 硬件加速:利用GPU或其他专用硬件加速视频处理。
  2. 软件处理:通过CPU进行视频处理,适用于没有专用硬件的设备。
  3. 混合处理:结合硬件加速和软件处理的优势。

应用场景

  • 视频监控:实时分析视频流以检测异常行为。
  • 视频会议:实时处理和传输视频流以保证高质量的通信。
  • 游戏直播:实时处理游戏画面并推送给观众。
  • 自动驾驶:实时处理摄像头数据以进行环境感知和决策。

示例代码

以下是一个简单的示例,展示如何使用OpenCV库在Python中实时处理视频流:

代码语言:txt
复制
import cv2

# 打开摄像头
cap = cv2.VideoCapture(0)

while True:
    # 读取一帧
    ret, frame = cap.read()
    
    if not ret:
        break
    
    # 处理帧(例如,转换为灰度图像)
    gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    # 显示处理后的帧
    cv2.imshow('Processed Frame', gray_frame)
    
    # 按'q'键退出循环
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

参考链接

解决问题的思路

如果你遇到问题,比如帧处理速度慢或内存使用过高,可以考虑以下解决方案:

  1. 优化代码:检查代码中是否有不必要的计算或内存分配。
  2. 使用硬件加速:如果可能,利用GPU加速视频处理。
  3. 减少分辨率:降低视频流的分辨率可以减少每帧的数据量。
  4. 多线程处理:将视频流分成多个部分并行处理。

通过这些方法,你可以在不捕获很多图片的情况下高效地处理每一帧视频数据。

相关搜索:有没有一种方法可以在不验证选择的情况下使用ChoicePrompt?有没有一种通用的方法可以在不生成“命中”的情况下缩短URL?有没有一种方法可以在不汇总结果的情况下聚合行?有没有一种方法可以在不拉伸对象拟合的情况下变换比例?有没有一种方法可以在不指定网站的情况下使用URL进行搜索?有没有一种方法可以在不循环代码的情况下在python中导入变量?有没有一种方法可以在函数内部不返回render的情况下进行突变?有没有一种方法可以在不模仿的情况下测试进行API调用的代码?有没有一种方法可以在不绘制多余形状的情况下调整JFrame的大小?在openpyxl中,有没有一种方法可以在不覆盖现有格式的情况下应用格式?在Delphi中,有没有一种方法可以在图片周围塑造一个按钮有没有一种方法可以在不循环的情况下向交易对手发送多笔交易有没有一种方法可以在不阻止桌面输入的情况下阻止移动键盘显示?有没有一种方法可以在不按Ctrl键的情况下在ObjectListView中进行多选?有没有一种方法可以在不手动编写所有变量的情况下赋值多个变量?有没有一种方法可以在不构建的情况下使用skaffold配置加载私有镜像?有没有一种方法可以在不触发观察功能的情况下更新Firebase中的孩子?有没有一种方法可以在没有联合的情况下组合列?有没有一种方法可以在不推送到上游的情况下派生git存储库?有没有一种方法可以在不构建结构的情况下从http响应中提取JSON?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

干货 | Python进阶系列之学习笔记(四)

二、Python 循环语句 在Python中 for 循环可以遍历任何序列的项目,如一个列表或者一个字符串等。 (1)for 循环 for 循环,重点在于循环。可以理解为在某种情况下反复的做一些事情。...名字 'name ' 没有被定义 异常 还有很多类型的异常错误,当程序抛出异常错误之后,程序就无法继续向下执行了.反而出现了一些错误的提示,这就是所谓的"异常" (2)捕获异常 那么咱们有什么方法,可以将这个异常进行捕获吗...说明: 此程序看不到任何错误提示(没有标红),因为用 except 捕获到了 NameError 异常,并添加了处理的方法(except 缩进段内的语句就是处理方法) 小总结 ?...注意: 当捕获多个异常时,可以把要捕获的异常的名字,放到 except 后,并使用元组的方式进行存储 获取异常的信息描述 来通过图片的方式,为大家进行详解 ?...当然不会了,Python 在捕获异常时,可以针对性写异常错误类型,也可以不写. try: print(name) except: print('捕获到程序出现异常') # 结果

1.1K10

Python进阶学习笔记【干货分享】

(2)while 循环 Python 编程中 while 语句也是循环语句种的一种,主要用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。...),因为用 except 捕获到了 NameError 异常 ,并添加了处理的方法(except 缩进段内的语句就是处理方法) 小总结 except ...捕获多个异常: 看个栗子: try: print...获取异常的信息描述 来通过图片的方式,为大家进行详解 捕获所有异常 有些情况下,我们开发人员也不知道程序的运行会出现什么类型的错误,总不能每个类型错误都写一次吧?...当然不会了,Python 在捕获异常时,可以针对性写异常错误类型,也可以不写. try: print(name)except:print('捕获到程序出现异常')# 结果:捕获到程序出现异常 except...这一行代码,可以调用也可以不调用,建议调用,因为 __init__ 方法往往是用来对创建完的对象进行初始化工作,如果在子类中重写了父类的 __init__ 方法,即意味着父类中的很多初始化工作没有做,这样就不保证程序的稳定了

1.1K20
  • 【Web技术】剖析前端异常及降级处理

    当页面发生错误的时候,相比于页面崩溃或点不动,在适当的时机,以一种适当的方式去提醒用户当前发生了什么,无疑是一种更友好的处理方式。...3.范围 很遗憾,结果并不令人满意,在实际的测试过程中,该方法未能捕获到异常。...错误边界在渲染期间、生命周期方法和整个组件树的构造函数中捕获错误。...那么有没有办法对ErrorBoundary进行兜底呢?即可以捕获异步代码或事件处理中的错误。 上文提到的window.addEventListener('error')正好可以解决这个问题。...七、总结 异常处理是高质量软件开发中的一个基本部分,但是在许多情况下,它们会被忽略,或者是不正确的使用,而处理异常只是保证代码流程不出错,重定向到正确的程序流中去。

    1.3K10

    浅析前端异常及降级处理

    当页面发生错误的时候,相比于页面崩溃或点不动,在适当的时机,以一种适当的方式去提醒用户当前发生了什么,无疑是一种更友好的处理方式。...3.范围 很遗憾,结果并不令人满意,在实际的测试过程中,该方法未能捕获到异常。...错误边界在渲染期间、生命周期方法和整个组件树的构造函数中捕获错误。...那么有没有办法对ErrorBoundary进行兜底呢?即可以捕获异步代码或事件处理中的错误。 上文提到的window.addEventListener('error')正好可以解决这个问题。...七、总结 异常处理是高质量软件开发中的一个基本部分,但是在许多情况下,它们会被忽略,或者是不正确的使用,而处理异常只是保证代码流程不出错,重定向到正确的程序流中去。

    1.5K10

    剖析前端异常及其降级处理和防范方案

    当页面发生错误的时候,相比于页面崩溃或点不动,在适当的时机,以一种适当的方式去提醒用户当前发生了什么,无疑是一种更友好的处理方式。...3.范围 很遗憾,结果并不令人满意,在实际的测试过程中,该方法未能捕获到异常。...错误边界在渲染期间、生命周期方法和整个组件树的构造函数中捕获错误。...那么有没有办法对ErrorBoundary进行兜底呢?即可以捕获异步代码或事件处理中的错误。 上文提到的window.addEventListener('error')正好可以解决这个问题。...七、总结 异常处理是高质量软件开发中的一个基本部分,但是在许多情况下,它们会被忽略,或者是不正确的使用,而处理异常只是保证代码流程不出错,重定向到正确的程序流中去。

    1.3K40

    影刀--- 自动化机器人需要了解的三大逻辑

    我们可以选择左侧栏中这个IF网页包含拖出来,拖到这个清空数据表格之前的位置 这个其实很容易理解,就是判断网页上面有没有对应的元素 接下来我们就进行一个元素的捕获操作了 我们可以思考下,搜到商品的网页和搜不到网页的商品之间的区别了...我们可以将这个暂无数据进行一个元素捕获 我们还是通过IF网页包含的操作,选择里面的不包含元素,这个元素就是我捕获的这个暂无数据 如果不包含这个暂无数据的话,那么就说明我们搜的商品存在 到这里我们进行归纳...我们一个个添加这个if命令会显得很乱,很复杂 是否存在这么一种方法:既实现了嵌套,看着也很整齐 那么这里就涉及到了一个指令叫做if多条件 这里就能进行多个条件的嵌套操作了 并且符合以下的全部条件..., 11.For次数循环 对于处理多页的订单 我们通过多次循环进行多页订单的一个翻页操作 我们在循环中每处理完一页的订单就进行翻页的操作 我们在每次翻页之前判断我们当前的页数有没有超标 所以我们添加一个...和continue) 对于上面的那个嵌套循环,我们好像非要等到循环完成之后我们才能对循环进行控制,在循环进行的时候我们是控制不了的,那么我们有没有什么方法进行循环的控制呢?

    14110

    Processing之完美循环的艺术

    前言 我们经常在社交网站上会看到一些生成艺术使用的视频或者 GIF 展示,不过不知道读者有没有仔细观察过有些视频和 GIF,他们的开头和结尾是无缝衔接的,或者说在某个时间点又开始重复循环。...3)我们根据这个动画完成比进行自定义动画实现 4)录制的时候,使用saveFrame保存帧画面成序列图到本地,同时nElapsedFrames递增1,当nElapsedFrames大于等于我们规定的一个...小菜推荐两个 GIF 制作网站,只需要把序列图上传上去,设定好动画帧速度,还可以设置循环次数(默认0为无限次),即可导出。当然,一些朋友可能习惯使用 Photoshop 来处理下,都是可以的。...如何让多个方块之间有一种时间差的运动?也就是时间错位。...鉴于我们正在处理归一化值,可以应用缓动曲线。timeLoop的结果只需要通过所需的曲线即可。下面的函数将锯齿波(线性时序)转换为三角波。这将使我们的方块上下移动,而不仅仅是向上移动。

    2.1K20

    老鸟带你画tiled lines

    小菜:老鸟,你在敲啥子? 老鸟:我在画 tiled lines。 小菜:tiled lines?这是啥子? 老鸟:tile 是瓷片的意思,就是在瓷片中画线,最终形成的线条具有一定的艺术美感。...老鸟:想了解不? 小菜:想!Show me the code! Processing 是一门开源编程语言和与之配套的集成开发环境(IDE)的名称。...我们把问题拆解成两部分: 1)将画布根据设定的网格大小,拆分成一个个的网格 想象我们的房屋地板面积是 1200 * 760, 每一个地板瓷砖大小tileSize为 40。...2)在每一个瓷片中,随机绘制左上到右下或者右上到左下的对角线。 瞧,我画了一张图: ?...---- 小菜与老鸟后期会不定期更新一些 Processing 绘制的代码思路分析,欢迎关注不迷路。

    57030

    ICLR论文盲审大反转:三个“8”完美过关,又来两个“1”彻底拒绝

    不仅能够捕获句子内的单词依赖性,还可以捕获句子和句子内部主题依赖性的时间迁移。...一个建议是,与基线方法相比,作者没有对所提出方法的复杂性和负载进行计算分析。 匿名评审2 总的来说,我认为这是一篇写得很清楚的论文。我认为这是一份可以接受发表的可靠文件。...因为两者在模型大小、模型建构以及可解释性不同,而且Transformer-XL不尊重自然单词的边界,rGBN-RNN尊重单词-句子-文档的结构。...这篇论文争议的关键就是作者使用的新模型有没有和已有的方法做比较。...再加上领域的大容量、年会的压力/期限,而不是每月或每周的科学期刊,这种情况就开始发生。 ? 这究竟是一个特殊情况,还是值得关注的普遍现象? 小编想起,之前身边的同学毕业论文盲审也得到了两级分化的评价。

    46210

    运行时异常和一般异常_异常代码c0000005

    此外,编译器不会检查Error是否被处理了,所以呀,在程序中我们不推荐去捕获Error类型的异常,主要的原因就是运行时异常大多都是逻辑错误导致的,它属于应该解决的错误,也就是说,一个正常的程序中是不应该存在...这种异常一般在如下几种情况中使用: 异常的发生并不会导致程序出错,进行处理之后可以继续执行后续的操作,比如,连接数据库失败之后可以重新连接之后再进行后续操作。...不过,在进行异常处理的时候,还需要注意一下几个问题: (2.1)Java异常处理用到了多态的概念,如果在异常处理过程中,先捕获到了基类,然后再捕获子类,那么捕获子类的代码永远都不会被执行。...因此,在进行以后才那个捕获的时候,正确的方法是先捕获子类,然后再捕获基类的异常信息。...咱们程序员得时刻记住,对捕获的异常不进行处理是一个非常不好的一贯,这样将非常不利于调试。但是,也不是抛出的异常越多越好,对于有些异常,比如运行时异常,实际上根本不必处理。

    47920

    NLP前路何在?Bengio等27位NLP顶级研究者有话说

    它们不是人类使用的自然形式。但语言不是这样,馈入系统的输入与人们在纸上读到的内容形式相同,人们可以用同样的形式教给另一个人。...我们能否创建可扩展到编辑或转述等事情的语言游戏(编辑或转述可以自然生成对比示例)?我们可以从人类标注者那里引出更多不同的语言例子吗?我们能否构建词袋模型完全无法处理的大规模训练数据集?...它仍然脆弱,犯了很多错,但是 amazing! 3. 您觉得有没有什么把 NLP 领域带向了错误的方向? 过分依赖次优基准。我们很多模型的性能只比强大的词袋基线模型好一点点。...学习如何精调模型,学习如何建立强大的基线模型,学习如何构建能经受住特定假设考验的基线。认真对待任何一篇论文,要不止一次地等待结论出现。很多情况下,你可以发表更加稳固的研究,做出更加强大的基线。...我不这么认为,因为我们从那些年的研究中得到了很多(ReLU、摊销推理等都是那个时代的遗产)。

    48120

    Python 工匠: 异常处理的三个好习惯

    只做最精确的异常捕获假如你不够了解异常机制,就难免会对它有一种天然恐惧感。你可能会觉得:异常是一种不好的东西,好的程序就应该捕获所有的异常,让一切都平平稳稳的运行。...首先,我们在项目内定义了错误码异常类:APIErrorCode。然后依据“错误码规范”,写了很多继承该类的错误码。当需要返回错误信息给用户时,只需要做一次 raise 就能搞定。...那时我需要写一个在后台运行的批处理图片脚本,而它刚好可以复用 process_image 函数所实现的功能。...上下文管理器是一种配合 with 语句使用的特殊 Python 对象,通过它,可以让异常处理工作变得更方便。那么,如何利用上下文管理器来改善我们的异常处理流程呢?让我们直接看代码吧。...最后再总结一下要点:只捕获可能会抛出异常的语句,避免含糊的捕获逻辑保持模块异常类的抽象一致性,必要时对底层异常类进行包装使用“上下文管理器”可以简化重复的异常处理逻辑看完文章的你,有没有什么想吐槽的?

    71310

    Java 异常处理的 9 个最佳实践

    在这些情况下,一种常见的失误就是在 try 代码块的最后关闭资源。 ? 问题就是,只有没有异常抛出的时候,这段代码才可以正常工作。try 代码块内代码会正常执行,并且资源可以正常关闭。...所以,最好不要捕获 Throwable ,除非你确定自己处于一种特殊的情况下能够处理错误。 ? 7、不要忽略异常 你曾经有去分析过一个只执行了你用例的第一部分的 bug 报告吗?...8、不要记录日志和抛出错误 这可能是该文章中最常被忽略的最佳实践。 你可以找到很多的其中有一个异常被捕获的代码片段,甚至是一些代码库,被记录和重新抛出。 ?...所以,只捕获你想处理的异常。 否则,在方法签名中指定它,并让调用者处理它。 9、封装好的异常类而不使用 有时候,最好是捕获一个标准异常并将其封装成一定制的异常。...总结 如你所见,当你抛出或捕获异常的时候,有很多不同的事情需要考虑,而且大部分事情都是为了改善代码的可读性或者 API 的可用性。 异常通常都是一种异常处理技巧,同时也是一种通信媒介。

    77720

    Java 异常处理的 9 个最佳实践

    在 Java 中,异常处理是个很麻烦的事情。初学者觉得它很难理解,甚至是经验丰富的开发者也要花费很长时间决定异常是要处理掉和抛出。 所以很多开发团队约定一些原则处理异常。...在这些情况下,一种常见的失误就是在 try 代码块的最后关闭资源。 ? 问题就是,只有没有异常抛出的时候,这段代码才可以正常工作。try 代码块内代码会正常执行,并且资源可以正常关闭。...3、记录指定的异常 每当你在方法签名中指定异常,你也应该在 Javadoc 中记录它。 这与上一个最佳实践具有相同的目标:尽可能多地向调用者提供信息,以便避免或处理异常。...所以,最好不要捕获 Throwable ,除非你确定自己处于一种特殊的情况下能够处理错误。 ? 7、不要忽略异常 你曾经有去分析过一个只执行了你用例的第一部分的 bug 报告吗?...这通常是由于一个被忽略的异常造成的。开发者可能会非常肯定,它永远不会被抛出,并添加一个 catch 块,不做处理或不记录它。而当你发现这个块时,你很可能甚至会发现其中有一个“这永远不会发生”的注释。

    81390

    【前端】详解JavaScript事件代理(事件委托)

    我们举一个通俗的例子来进行说明: 比如一个宿舍的同学同时快递到了,一种方法就是他们一个个去领取,还有一种方法就是把这件事情委托给宿舍长,让一个人出去拿好所有快递,然后再根据收件人一 一分发给每个宿舍同学...一、事件冒泡 在JavaScript编程中,事件代理(Event Delegation)是一种将事件监听器应用于一个父元素,而不是直接应用于每一个子元素的技术。...这种方法可以提高性能,尤其是在处理大量元素时。本文将详细介绍事件代理的概念、原理、使用场景、代码示例以及注意事项。...如果用了事件委托就没有这种麻烦了,因为事件是绑定在父层的,和目标元素的增减是没有关系的,执行到目标元素是在真正响应执行事件函数的过程中去匹配的;所以使用事件在动态绑定事件的情况下是可以减少很多重复工作的...Web 应用程序中,对所有可单击的元素都采用这种方式,那么结果就会有数不 清的代码用于添加事件处理程序。

    57110

    python抛出异常写法_零基础学 Python(32):如何抛出和捕获异常?「建议收藏」

    出现错误或者异常没有关系,关键在于你要学会预判程序可能会出现的错误或异常,然后在代码中捕获这些异常并处理。...异常的捕获的语法有如下四种: 第一种语法 只捕捉但是不想获取异常信息 第二种语法 不但捕捉了还要获取异常信息,赋值给 e 后,后面你可以把异常信息打印到日志中。...捕获多个异常? 每个except捕获一个异常 一个 try 语句可能有多个 except 子句,以指定不同异常的处理程序,但是最多会执行一个处理程序。...捕获多个异常 上面的例子可以看出来,第二个异常和第三个异常是属于同一类,就是 计算错误,异常处理的代码是一样的,那有没有办法将它们合并在一起呢,简化一下代码呢?...答案是,可以的。 在 except 后面其实是可以接多个异常的,多个异常之间使用括号包裹。只要匹配上一个就算捕获到,就会进入相应的代码分支。

    91220

    程序员你为什么这么累【续】:编码习惯之异常处理

    针对这些功能,在流程上当然可以采取相对的策略来保证,但从开发的角度来说,任何规定都无法保证一定不会发生错误,老虎也有打盹的时候,我只相信代码。 贴一段非常常见的代码,大家觉得这段代码有没有问题? ?...只有明显不需要关心的异常,如关闭资源的时候的io异常,可以捕获然后什么都不干,其他时候,不允许捕获异常,都抛出去,到controller处理。...导致的问题,第一代码可读性很差,你如果工作了看到一半代码是try-catch和空判断你会同意我的观点的,第二更加重要的掩盖了很多错误,如上面图片的例子!...见我的编码习惯 - Controller规范 所以上面的代码,我来写的话是这样的,清晰明了。 ? 另外一种后台定时任务队列的异常,其实思路是一样的,有个统一的地方处理异常,里面的代码同样不准捕获异常!...我遇到是很多异常本来很简单,但由于一堆健壮的try-catch和空判断,导致问题发现很晚,可能很小一个问题最后变成了一个大事件,在一些IT系统里面,尤其常见。

    814110

    编码习惯之异常处理

    针对这些功能,在流程上当然可以采取相对的策略来保证,但从开发的角度来说,任何规定都无法保证一定不会发生错误,老虎也有打盹的时候,我只相信代码。 贴一段非常常见的代码,大家觉得这段代码有没有问题? ?...只有明显不需要关心的异常,如关闭资源的时候的io异常,可以捕获然后什么都不干,其他时候,不允许捕获异常,都抛出去,到controller处理。...导致的问题,第一代码可读性很差,你如果工作了看到一半代码是try-catch和空判断你会同意我的观点的,第二更加重要的掩盖了很多错误,如上面图片的例子!...见我的编码习惯 - Controller规范 所以上面的代码,我来写的话是这样的,清晰明了。 ? 另外一种后台定时任务队列的异常,其实思路是一样的,有个统一的地方处理异常,里面的代码同样不准捕获异常!...我遇到是很多异常本来很简单,但由于一堆健壮的try-catch和空判断,导致问题发现很晚,可能很小一个问题最后变成了一个大事件,在一些IT系统里面,尤其常见。

    84990

    Learning To See in the Dark CVPR2018

    然而大多数情况下,我们还是希望得到暗光情况下的高质量照片的。从摄影学角度看,以下方法可以提升画面的光照: 1....但是,这些方法对于输入图片仍然有一定要求:捕获的图像在暗光条件下,噪声不能太大。在未来我们将逐一介绍以上方法。 同时,作者还综合的review在2018年之前的噪声图像数据集。...还有DND数据集的话,本身是为了解决去噪社区对于真实噪声图片的需求,但是很多的图片也是在白天拍摄的,不适合对于低光照情况下进行参考。...这篇文章则直接采用一个端到端的网络,不处理SRGB图像,而是直接对于传感器端的Raw数据进行处理。...Raw文件中的传感器数据所有的颜色都放置在了一个通道上,经过比较可以发现将不同色彩通道的值通过卷积神经网络分配到不同通道上的效果比在处理不同颜色时采用Mask的方法效果好。

    73230

    【小家java】Spring事务嵌套引发的血案---Transaction rolled back because it has been marked as rollback-only

    但笔者今天不讨论这个,哈哈~本文将从应用层面稍带一点源码,来解释一下我们平时使用事务遇到的一个问题但让很多人又很棘手的问题:Transaction rolled back because it has...这个时候其实可以不通过异常来处理,或者通过自定义异常的方式来处理。 **如果某个子方法有异常,spring将该事务标志为rollback only。...然而,要注意是那样做仅仅适用于在数据访问失败的情况下且只要所有操作事务能提交 Tips: Spring aop 异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常...,才能进行回滚,默认情况下aop只捕获runtimeException的异常 换句话说:service上的事务方法不要自己try catch(或者catch后throw new runtimeExcetpion...另外一种方案: 在service层方法的catch语句中增加:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()

    9.4K10
    领券