Opencv读取RTSP进行图像处理延迟高的解决方法

这篇具有很好参考价值的文章主要介绍了Opencv读取RTSP进行图像处理延迟高的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近的项目需要用Opencv读取rtsp流,然后进行目标检测和跟踪,由于图像处理算法的速度不快,在读取RTSP流后再处理会有非常大的延时(十几秒)。解决方法是创建一个线程专门用于抓取帧

代码如下,主体部分来源于国外某网友,可以根据自己的情况更改文章来源地址https://www.toymoban.com/news/detail-506331.html

from threading import Thread
import cv2
import time
from mmtrack.apis import inference_mot, init_model  #导入mmtrack进行目标跟踪
from torchvision import transforms

class VideoScreenshot(object):
    def __init__(self, src=0):
        # Create a VideoCapture object
        self.capture = cv2.VideoCapture(src)

        # Take screenshot every x seconds
        self.screenshot_interval = 0.5

        # Default resolutions of the frame are obtained (system dependent)
        self.frame_width = int(self.capture.get(3))
        self.frame_height = int(self.capture.get(4))

        # Start the thread to read frames from the video stream
        self.thread = Thread(target=self.update, args=())
        self.thread.daemon = True
        self.thread.start()

    def update(self):
        # Read the next frame from the stream in a different thread
        while True:
            if self.capture.isOpened():
                (self.status, self.frame) = self.capture.read()

    def show_frame(self):
        # Display frames in main program
        if self.status:
            ## 这一块儿是目标跟踪和显示的代码
            result = inference_mot(model, self.frame, frame_id=self.frame_count)
            new_img = model.show_result(
                self.frame,
                result,
                score_thr=score_thr,
                show=show,
                wait_time=0,
                out_file=None,
                backend=backend)
            cv2.imshow('frame', self.frame)

        # Press Q on keyboard to stop recording
        key = cv2.waitKey(1)
        if key == ord('q'):
            self.capture.release()
            cv2.destroyAllWindows()
            exit(1)

    def save_frame(self):
        # Save obtained frame periodically
        self.frame_count = 0
        def save_frame_thread():
            while True:
                try:
                    cv2.imwrite('pools/frame_{}.png'.format(self.frame_count), self.frame)
                    self.frame_count += 1
                    time.sleep(self.screenshot_interval)
                except AttributeError:
                    pass
        Thread(target=save_frame_thread, args=()).start()

if __name__ == '__main__':
    rtsp_stream_link = 'RTSP链接'
    video_stream_widget = VideoScreenshot(rtsp_stream_link)
    video_stream_widget.save_frame()
    
    ## 这一块是目标跟踪的代码
    checkpoint = 'work_dirs/epoch_28.pth'
    config = 'work_dirs/train_cfg.py'
    score_thr = 0.0
    show = False
    device = 'cuda:0'
    backend = 'cv2'
    model = init_model(config, checkpoint, device=device)


    while True:
        try:
            video_stream_widget.show_frame()
        except AttributeError:
            pass

到了这里,关于Opencv读取RTSP进行图像处理延迟高的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 入门:使用 OpenCV 进行图像处理

    入门:使用 OpenCV 进行图像处理

    介绍 图像处理是计算机视觉的一个分支,它使用各种算法来处理和分析数字图像。它涉及使用数学或统计操作来为许多应用修改图像,包括但不限于医学和卫星图像以及数字摄影。本文探讨了图像处理的基础知识和该领域中使用的一些技术。 目录 图像处理基础 图像处理的应

    2024年02月08日
    浏览(12)
  • “探索图像处理的奥秘:使用Python和OpenCV进行图像和视频处理“

    “探索图像处理的奥秘:使用Python和OpenCV进行图像和视频处理“

     1、上传图片移除背景后下载。在线抠图软件_图片去除背景 | remove.bg – remove.bg 2、对下载的图片放大2倍。ClipDrop - Image upscaler  3、对放大后的下载照片进行编辑。  4、使用deepfacelive进行换脸。 1)将第三步的照片复制到指定文件夹。C:myAppdeepfakelivetempDeepFaceLive_NVIDIAuserda

    2024年02月16日
    浏览(45)
  • 第一次用用Opencv进行图像处理

    第一次用用Opencv进行图像处理

    2023.7.06更新 直接放参考链接,完成安装该步骤来,简单高效! 安装教程链接 有一个问题就是第一次安装完成后运行时会报确实某些ddl的错误,关机重启就好啦! ddl的错误解决后可以用以下代码进行测试,测试通过后基本就ok啦,记得改一下图片的地址。 错误2 找不到某个

    2024年02月16日
    浏览(7)
  • C++中利用OpenCV进行图像批量处理

    C++中利用OpenCV进行图像批量处理

    想要对大量图像进行简单处理,我们可以利用代码实现。 OpenCV作为开源的图像处理库,安装方便,容易上手,功能强大,受到了很多人的喜爱。 笔者正在参加全国大学生智能汽车竞赛。由于放假在家,家中没有铺设赛道的条件,我找到了一款上位机,可以将智能车的图像导

    2024年02月03日
    浏览(6)
  • 使用Python和OpenCV进行图像处理和分析

    简介: 图像处理和分析是计算机视觉领域的重要组成部分。本文将介绍如何使用Python编程语言和OpenCV库进行图像处理和分析。我们将涵盖图像读取、显示、滤波、边缘检测和图像分割等常见的图像处理操作,并提供相应的代码示例。 安装OpenCV: 首先,我们需要安装OpenCV库。

    2024年02月12日
    浏览(44)
  • 【课程介绍】OpenCV 基础入门教程:图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪

    [ 专栏推荐 ] 😃 《视觉探索: OpenCV 基础入门教程》 😄 ❤️【简介】: Opencv 入门课程适合初学者,旨在介绍 Opencv 库的基础知识和核心功能。课程包括图像读取、显示、保存,图像处理和增强(如滤波、边缘检测、图像变换),特征提取和匹配,目标检测和跟踪等内容。学

    2024年02月16日
    浏览(1004)
  • 【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    本专栏代码总库地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/VideoRelated/get_started_with_videos.py xv_opencv_tutorials/VideoRelated/get_and_set_video.py xv_opencv_tutorials/VideoRelated/save_video.py 参考官网 https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html 从设备,可以是摄像

    2024年02月03日
    浏览(7)
  • Python图像处理:使用OpenCV对图像进行HSV和RGB表示法的转换

    Python图像处理:使用OpenCV对图像进行HSV和RGB表示法的转换 在图像处理中,我们经常需要使用不同的颜色表示法来处理图像。在OpenCV中,我们可以使用HSV(色相、饱和度、亮度)表示法来替代标准的RGB(红、绿、蓝)表示法来处理图像。HSV表示法更为直观和易于使用,因为它将

    2024年02月06日
    浏览(42)
  • 数字图像处理(实践篇)二十二 使用opencv进行人脸、眼睛、嘴的检测

    目录 1 xml文件 2 涉及的函数 3 实践 使用opencv进行人脸、眼睛、嘴的检测。 1 xml文件 方法① 下载  地址:https://github.com/opencv/opencv/tree/master/data/haarcascades 点击haarcascade_frontalface_default.xml文件 对着Raw右键,选择“链接另存为”,选择代码所在的路径即可,就可以下载这个文件啦

    2024年02月03日
    浏览(17)
  • 如何在Flutter应用中使用 OpenCV和 CC++库进行图像流处理

    如何在Flutter应用中使用 OpenCV和 CC++库进行图像流处理

    本文将帮助你在 Android 和 iOS 中为 Flutter 应用程序集成 C/C++ 插件。 问题1: Flutter camera 插件没有为快速复杂的图像流处理提供完整的指南。 问题2: Flutter camera 插件处理图像流太慢。 问题3: 图像处理需要OpenCV包 问题4: 你当前的图像流处理实现正在阻塞 UI 并导致你的应用程

    2024年02月08日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包