- 为DVR准备RTSP流
- 准备您的Raspberry Pi
- 在Raspberry Pi上安装OpenCV和其他库
- 对Raspberry Pi进行编程以从CCTV流式传输RTSP视频
- 测试Raspberry Pi CCTV Viewer
如今,大多数工作场所和商业建筑都安装了CCTV监视系统来监视活动。但是通常,相关机构或安全人员很难连续监视所有摄像机的实时广播以寻找可疑活动。随着计算机视觉和机器学习的快速发展,现在是时候让我们的CCTV系统变得更智能了。在本文中,我们将讨论如何使用Python和OpenCV通过具有Raspberry pi的RTSP流从现有DVR(例如海康威视DVR)中获取视频提要。一旦掌握了这一点,我们就可以在这些视频源上利用OpenCV的功能来检测特定物体,读取车号牌,人脸识别等等。
为了本教程的缘故,我将使用已经安装在建筑物中的Hikvision 4频道CCTV DVR。我们将把所有4个摄像机屏幕流式传输到Raspberry,并将其显示在5英寸触摸屏显示器上,用户可以根据需要在每个通道之间切换。考虑到OpenCV的功能,我对此了解不多,我确实计划通过运动检测,bugler视频警报,人员跟踪等扩展它,但让我们将所有这些留给另一个教程。
为DVR准备RTSP流
在深入研究raspberry pi硬件和python代码之前,检查DVR是否支持RTSP以及如何访问它很重要。我将大部分时间都花在了这里,因为每种DVR的操作步骤似乎都不同,因此您必须要做很多尝试,然后尝试多次。但是,一旦您弄清楚了,它每次都会像魅力一样发挥作用。
首先,请确保您知道DVR系统的用户名和密码,并且已连接到Internet。同样在本教程中,我将仅从本地网络流式传输RTSP,如果您具有静态IP,则可以进行端口转发,并在其他网络中遵循该规则。但是就本教程而言,我们将在局域网内进行所有操作。
步骤1:找到您的DVR的IP地址。DVR连接到Internet后,将为其分配IP地址。您可以从路由器配置页面或从DVR屏幕本身找到该IP地址(假设您已将监视器连接到DVR)。我的路由器的IP地址为http://192.168.11.110/(出于安全原因而更改)
第2步:打开您选择的任何Web浏览器,然后输入IP地址,然后按Enter。您将被带到DVR登录页面。您必须在其中输入DVR的用户名(更改了我的用户名)和密码的位置。默认用户名是admin,但是您必须知道密码。我的DVR登录屏幕如下所示,您的外观可能有所不同。
步骤3:成功登录后,通常在大多数情况下,在DVR上查找RTSP端口号,默认值为554,但可能会更改。当您在此处使用配置设置检查是否有启用RTSP的选项时,如果没有,则可以跳过它。您必须在这里花费一些时间,因为基于DVR的操作步骤有所不同。
步骤4:准备您的RTSP链接,基本的RTSP链接将采用以下格式-
rtsp://
再次,这取决于DVR的类型,您可以使用Google查找适合您的DVR。适用于以下格式的格式,您也可以尝试使用以下格式:
rtsp://
哪里
rtsp:// admin:[email protected]:554 / Streaming / Channels / 202 /
步骤5:在VLC上播放流,以确保您的RTSP连接正常。在与DVR连接到同一网络的计算机上安装VLC,启动它,然后按 Ctrl + N 进行网络流传输。输入如下所示的URL,然后按OK。
如果RTSP链接按其应有的方式工作,则应在VLC播放器上看到CCTV的实时流,如下所示。如果抛出错误,则必须找出正确的链接。
完成此操作后,我们不再需要谈论DVR让我们继续使用Raspberry pi。
准备您的Raspberry Pi
接下来,我们需要使用5英寸显示器设置树莓派。由于我们已经讨论了很多次,因此我将不做详细介绍。您可以阅读以下文章以获取指导-
- Raspberry Pi入门
- 5英寸显示器与Raspberry Pi的接口
我们正在使用运行有Debian Buster OS的Raspberry Pi 3 B +。如果可以的话,使用Pi 4也可能是一个好主意,并添加一些散热选项(如散热器或风扇),因为我注意到温度接近70 * C。到目前为止,我还没有执行任何冷却程序,而我的设置看起来像这样-
在Raspberry Pi上安装OpenCV和其他库
下一步是在Raspberry Pi上安装OpenCV。前面我们讨论了如何在Raspberry pi上编译OpenCV。
- 在Raspberry Pi上安装OpenCV
- OpenCV入门
您可以按照上面的链接使用Cmake编译OpenCV,也可以使用apt-get方法进行安装。如果您不十分认真地进行OpenCV编程,我建议您稍后。我使用以下命令来安装OpenCV。
sudo apt更新sudo apt安装python3-opencv
在我们的程序中,我们还将利用“ cvui”库创建具有两个按钮的基本UI,使我们能够在四个屏幕之间导航。要安装cvui,请遵循以下命令。
python3 pip安装cvui
安装了两个软件包后,我们就可以进入主程序了。确保两个已安装的软件包都可以正常工作,尝试从Pi的命令终端导入它们。
对Raspberry Pi进行编程以从CCTV流式传输RTSP视频
该项目的完整程序可在此页面的末尾找到。相同的解释如下。我们通过包含所需的头文件开始该程序。
导入cv2导入cvui
该程序的下一部分需要进行一些编辑。您必须输入DVR的用户名和密码。对于5英寸显示器,宽度和高度分别为800和480,因此我们输入了相同的值。
rtsp_username =“ admin” rtsp_password =“ aswinth347653”宽度= 800高度= 480 cam_no = 1
继续,我们有一个称为创建摄像机的函数,该函数将在每次更改必须查看的摄像机编号时使用。
def create_camera(channel):rtsp =“ rtsp://” + rtsp_username +“:” + rtsp_password +“ @ 192.168.29.100:554 / Streaming / channels /” +通道+“ 02” cap = cv2.VideoCapture()cap.open(rtsp)cap.set(3,640)#宽度的ID号为3 cap.set(4,480)#高度的ID号为480 cap.set(10,100)#亮度的ID号为10qq返回盖
在主while循环内,我们有程序从捕获设备读取一帧并将其转换为全屏。我们程序中的显示窗口将被称为屏幕。
成功,current_cam = cam.read()dim =(宽度,高度)Full_frame = cv2.resize(current_cam,dim,插值= cv2.INTER_AREA)cv2.namedWindow('screen',cv2.WINDOW_NORMAL)cv2.setWindowProperty('screen ',cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
接下来,我们有两个按钮的代码,它们将被放置在屏幕上。命令 cvui.button 用于将按钮放置在所需位置,命令 cvui.mouse 用于检测鼠标单击。 如果 单击两个按钮,我们有两个 if 语句,则将执行相应的 if 语句。
如果(cvui.button(Full_frame,宽度-100,高度-40,“下一个”)和cvui.mouse(cvui.CLICK)):print(“按下下一个按钮”)cvui.init('screen')cam_no = cam_no如果(cam_no> 4)+1:cam_no = 1 del cam cam = create_camera(str(cam_no))if(cvui.button(Full_frame,width-200,height-40,“ Previous”)and cvui.mouse(cvui。单击)):打印(“按下上一个按钮”)cvui.init('屏幕')cam_no = cam_no-如果(cam_no <1)则为1:cam_no = 4 del cam cam = create_camera(str(cam_no))
在 if 语句中,基于按钮,我们增加或减少 cam_no 计数,然后使用上面讨论的功能删除现有的cam并创建一个新的cam。另外,请注意,每次都要刷新 cvui.init 来刷新UI屏幕。
代码的最后部分是将帧显示为输出,并在按q时从输出屏幕退出。我们只是等待按键,如果按键是“ q”,我们将销毁所有窗口。
如果cv2.waitKey(1)和0xFF == ord('q'):cv2.destroyAllWindows()中断,则cv2.imshow('screen',Full_frame)
测试Raspberry Pi CCTV Viewer
测试代码非常简单,打开pi的电源,然后启动本页底部给出的python代码。确保输入正确的凭据,RTSP链接才能正常工作。为了安全起见,您还可以尝试使用已安装在Buster OS上的Pi上的VLC播放器。
如果它在VLC上工作,则可以确保pi连接到相同的网络,并且RTSP链接可以正常工作。然后打开此页面底部给出的程序,并使用任何python IDE启动它。如果正确输入了凭证,您将看到以下屏幕。该图显示了实时摄像机供稿,底部有两个按钮。
由于屏幕具有TFT触摸屏,因此您只需触摸“上一个”和“下一个”按钮即可移至下一个摄像机。该程序被编写为在前四个摄像机之间循环,如果您的DVR连接了四个以上的摄像机,则可以轻松地对其进行修改。
可以在下面的视频中找到该项目的完整工作。希望您喜欢本教程并从中学到有用的东西,如果有任何疑问,请将其留在评论部分,或者您也可以使用我们的论坛来发布您的其他需求。另外,我打算在此设置中添加动作检测和视频保存功能,因此请继续关注。