OpenCV调用海康威视等摄像头(处理rtsp视频流)方法以及,出现内存溢出(error while decoding)或者高延迟问题解决

在这里插入图片描述

博客已搬家,欢迎访问新居:http://lukeyalvin.site,主要涉及SLAM相关方向,目前知识积累尚浅,多多指教!

摄像头与电脑的连接

首先,你需要获得hikvision摄像头的密码以及用户名(不知道的可以去打客服电话进行咨询),这里不做介绍;

其次,将电脑的ip设置与hikvision同频段,一般来说,海康威视的ip为192.168.1.64,电脑设置如下:
在这里插入图片描述

最后,使用IE浏览器(其他可能不支持),输入ip:192.168.1.64并登陆
在这里插入图片描述

输入用户名和密码即可获取视频画面(可以观察到,视频有畸变)
在这里插入图片描述

使用python+openCV获取监控画面

在使用openCV获取监控画面,具体代码如下

url格式为:“rtsp://用户名(一般默认admin):密码@网络IP(海康威视一般为:192.168.1.64)/Streaming/Channels/1”

import cv2

url = "rtsp://admin:*******@192.168.1.64/Streaming/Channels/1"
cap = cv2.VideoCapture(url)
ret, frame = cap.read()
while ret:
	# 读取视频帧
    ret, frame = cap.read()
	# 显示视频帧
    cv2.imshow("frame", frame)
	#等候1ms,播放下一帧,或者按q键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

#释放视频流
cap.release()
#关闭所有窗口
cv2.destroyAllWindows()

输出画面默认是1080P的高清画面,我们可以写一个resize方法,等比例缩为720P的画面,代码实现如下:

def img_resize(image):
    height, width = image.shape[0], image.shape[1]
    # 设置新的图片分辨率框架 640x369 1280×720 1920×1080
    width_new = 1280
    height_new = 720
    # 判断图片的长宽比率
    if width / height >= width_new / height_new:
        img_new = cv2.
树莓派使用OpenCV进行图像处理时,可能会遇到摄像头图像延迟问题。这种延迟是由于图像采集、传输和处理所需的时间造成的。延迟会导致实时图像处理的效果受到一定影响,特别是在需要实时反馈的应用中。 为了解决树莓派使用OpenCV的图像延迟问题,我们可以采取以下几种方法: 1. 降低分辨率:降低图像的分辨率可以减少处理的数据量,从而减少延迟。通过适当降低分辨率,可以在一定程度上提处理速度和实时性。 2. 优化算法:对于图像处理的算法,可以进行一定的优化。例如,选择更效的算法或者使用并行计算技术,以提处理速度和性能。 3. 使用硬件加速:利用树莓派的GPU进行图像处理所需的运算,可以大大提处理速度。通过使用OpenCV的硬件加速功能,可以减少延迟并提性能。 4. 缓存机制:在图像处理中,可以采用缓存机制来提处理效率。通过对图像数据进行缓存,可以减少传输和处理的时间,从而减少延迟。 5. 多线程处理:在树莓派上可以使用多线程技术进行图像处理。将图像采集和处理分别放在不同的线程中,可以提处理的实时性和性能。 总之,使用树莓派进行图像处理时,我们可以通过降低分辨率、优化算法、使用硬件加速、使用缓存机制和多线程处理方法解决摄像头图像延迟问题,从而提图像处理的实时性和性能。
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lukey Alvin

谢谢鼓励!越努力越幸运!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值