文章目錄

  • 一.前言
  • 二.準備
  • 三.折騰
  • 1.攝像頭接入到內網
  • 2.配置攝像頭
  • 1.觀看實時畫面
  • 2.將攝像頭併入內網
  • 3.配置推流參數
  • 3.拉流測試
  • 四.對接Python、YOLOv8進行實時圖像識別
  • 1.簡介
  • 2.環境搭建
  • 3.代碼測試
  • 五.總結

一.前言

筆者為了開發新的PyQt5界面買了外接的網絡攝像頭,目的是實測拉流效果以及後面開發圖像識別、機器學習程序做準備。
本篇將演示如何配置海康威視攝像頭、聯動Python環境下的YOLOv8實現實時圖像識別。
二.準備

  1. 電腦、需要做一些代碼程序開發,我的電腦是AMD的處理器,無法使用GPU,建議大家用英特爾處理器的電腦。 Python
  2. 本次拿Python作為編程語言進行開發,主要是開發快 攝像頭
  3. 這是本次實驗的第二個硬件,筆者選擇的是海康威視品牌攝像頭,型號選擇DS-2CD3T即可,我買的是二手DC12V電源供電的版本,大家可以根據自己情況選擇DC供電或者POE供電版本,這裏我貼一下兩者區別:

    三.折騰

1.攝像頭接入到內網

本款攝像頭已經初始化還原,攝像頭通電後默認內網地址為192.168.1.64,如果我們路由器網段和攝像頭在一個網段,那麼不需要單獨設置內網地址,如果和我一樣不在一個網段,那麼需要設置內網地址了。

具體來説是:拿一根網線把攝像頭和電腦連接起來,更改電腦的以太網IP地址為192.168.1.xxx,

使用快捷鍵win+r打開運行

輸入ncpa.cpl打開網絡連接界面:

python調用海康威視的攝像頭,實時顯示監控內容_#pyqt


我這裏設置的是192.168.1.10

python調用海康威視的攝像頭,實時顯示監控內容_#開發語言_02


當心!!!這裏點擊確定後,如果出現了下面的彈窗

python調用海康威視的攝像頭,實時顯示監控內容_#圖像識別_03


可以這樣設置以太網IP和子網掩碼地址:

首先“以管理員身份打開命令提示符”

python調用海康威視的攝像頭,實時顯示監控內容_#圖像識別_04


然後輸入

netsh interface ip set address "以太網" static 192.168.1.10 255.255.255.0

然後按下回車就好了~

python調用海康威視的攝像頭,實時顯示監控內容_#圖像識別_05


通過上面的操作我們的電腦就和攝像頭在同一個內網了。

2.配置攝像頭

1.觀看實時畫面

在瀏覽器打開192.168.1.64到攝像頭的後台頁面,首次打開會引導你設置用户名和密碼,我這裏就略過了,之後打開這個地址都是下圖的界面了。

python調用海康威視的攝像頭,實時顯示監控內容_#開發語言_06


使用設置好的用户名和密碼登錄後看到下面界面

python調用海康威視的攝像頭,實時顯示監控內容_#開發語言_07


為什麼看不到畫面呢?這需要我們更換瀏覽器,這裏使用edge瀏覽器,除了安裝插件之外,還有個關鍵步驟:切換到兼容模式

python調用海康威視的攝像頭,實時顯示監控內容_#YOLO_08


然後就看到畫面啦,這裏我遮擋了,大家按照這個步驟操作就能成!

python調用海康威視的攝像頭,實時顯示監控內容_#YOLO_09

2.將攝像頭併入內網

我的路由器是192.168.99.xxx網段的,這需要我們調整攝像頭IP地址到我們路由器的局域網中,具體操作是:攝像頭後台-配置-網絡-基本配置-TCP/IP,具體見下圖
在這裏配置好IPv4的地址、子網掩碼、網關後點擊保存,這時候斷掉攝像頭與電腦連接的網線,將攝像頭接入到路由器即可(PS:一般是攝像頭接錄像機,錄像機接路由器,我這裏為了方便實驗,主要是為了節省成本就沒買錄像機,也沒必要)
注意設置的IP地址不要和內網其他設備的IP衝突,建議登錄到路由器後台查看所有設備的IP

python調用海康威視的攝像頭,實時顯示監控內容_#python_10


網線接路由器任意一個wan口即可,記得接上dc12v電源,這時候就能通過內網靜態地址管理攝像頭了。

輸入我們設置的http://192.168.99.200/驗證一下,OK沒問題,攝像頭後台正常打開

python調用海康威視的攝像頭,實時顯示監控內容_#python_11

3.配置推流參數

海康威視的攝像頭在運行時,會推出兩個流地址,分別是主碼流和子碼流

主碼流我是這麼配置的:

python調用海康威視的攝像頭,實時顯示監控內容_#開發語言_12


下圖為子碼流配置:

python調用海康威視的攝像頭,實時顯示監控內容_#開發語言_13

3.拉流測試

大家可以自行下載VLC軟件,這個軟件可以幫我們很方便的測試拉流效果。

VLC Media Player(VLC多媒體播放器),最初命名為VideoLAN客户端,是VideoLAN品牌產品,是VideoLAN計劃的多媒體播放器。它支持眾多音頻與視頻解碼器及文件格式,並支持DVD影音光盤,VCD影音光盤及各類流式協議。它也能作為unicast或multicast的流式服務器在IPv4或IPv6的高速網絡連接下使用。它融合了FFmpeg計劃的解碼器與libdvdcss程序庫使其有播放多媒體文件及加密DVD影碟的功能。

python調用海康威視的攝像頭,實時顯示監控內容_#圖像識別_14

拉流地址的規則為:

rtsp://username:password@<address>:<port>/streaming/channels/<id> 比如我的拉流地址就是:

rtsp://admin:password@192.168.99.200:554/h265/ch1/main/av

具體操作方法:打開VLC播放器-點擊“媒體”-打開網絡串流

python調用海康威視的攝像頭,實時顯示監控內容_#YOLO_15


選擇“網絡”-輸入流地址,點確定

python調用海康威視的攝像頭,實時顯示監控內容_#YOLO_16

然後就能看到畫面了~證明我們拉流成功了

python調用海康威視的攝像頭,實時顯示監控內容_#YOLO_17

四.對接Python、YOLOv8進行實時圖像識別

1.簡介

本次實驗目的主要是針對攝像頭傳來的流地址中的畫面裏的物體進行識別,主要是通過YOLOv8來實現,YOLOv8需要Python環境,大家可以自行搜索安裝Python,博主這裏使用的是Python3.8,為什麼沒用Python3.12、Python3.13呢?目的是為了穩定測試。
這裏介紹一下YOLOv8

Ultralytics官網

python調用海康威視的攝像頭,實時顯示監控內容_#pyqt_18

2.環境搭建

這裏認為大家已經安裝改好了Python
大家在cmd控制枱中輸入下面命令安裝ultralytics

pip install ultralytics

這樣就安裝好了

python調用海康威視的攝像頭,實時顯示監控內容_#開發語言_19

3.代碼測試

新建一個py腳本輸入下面三行代碼,執行

from ultralytics import YOLO

# 加載模型
model = YOLO("yolov8n.pt")

# 運行推理
results = model("rtsp://admin:xxxx@192.168.99.200:554/h265/ch1/main/av", show=True)

運行效果如圖

哈哈 我找來了朋友一起來搭建這個實驗環境~

python調用海康威視的攝像頭,實時顯示監控內容_#YOLO_20