• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Python與??礢DK的工業(yè)設備視頻監(jiān)控系統(tǒng)開發(fā)

      2021-01-04 01:47:55
      科學與信息化 2021年1期
      關鍵詞:威視???/a>調(diào)用

      丹東東方測控技術股份有限公司 遼寧 丹東 118000

      前言

      ??低暤谋O(jiān)控產(chǎn)品在工業(yè)企業(yè)內(nèi)應用十分廣泛,如何利用??低暜a(chǎn)品實現(xiàn)專有定制化視頻監(jiān)控系統(tǒng)是十分有意義的。Python語言易學易用,簡單高效,但目前海康官方還未提供Python版SDK。本文介紹了在Windows系統(tǒng)下Python編程環(huán)境中,結合海康威視SDK設計和開發(fā)工業(yè)設備實時視頻監(jiān)控軟件的方法。

      (1)Python簡介。Python是一種跨平臺的計算機程序設計語言。無論是桌面開發(fā)序、Web開發(fā)、人工智能、自動化運維、科學運算,Python都有著豐富的擴展模塊,使用Python開發(fā)應用程序,無疑是高效的。

      (2)??礢DK。??低昐DK即海康提供的開發(fā)包,主要包含設備網(wǎng)絡SDK和播放庫SDK(以下簡稱SDK)。??低曉O備網(wǎng)絡SDK是基于設備私有網(wǎng)絡通信協(xié)議開發(fā)的,為嵌入式網(wǎng)絡硬盤錄像機、網(wǎng)絡攝像機等網(wǎng)絡產(chǎn)品服務的配套模塊,提供Windows和Linux兩個版本,用于遠程訪問和控制設備軟件的二次開發(fā)[1]。

      1 開發(fā)方法

      1.1 Ctypes模塊簡介

      模塊Ctypes是Python內(nèi)建的用于調(diào)用動態(tài)鏈接庫函數(shù)的功能模塊,一定程度上可以用于Python與其他語言的混合編程,可以說Ctypes模塊是Python應用程序與SDK之間的橋梁。

      1.2 DLL裝載

      DLL(動態(tài)鏈接庫)是Dynamic Link Library的縮寫,在Windows下Python環(huán)境中使用ctypes.windll.loadLibrary()函數(shù)進行DLL的裝載。本例中??礢DK的DLL載入方法為:sdk=windll.LoadLibrary("HCNetSDK.dll")。

      1.3 數(shù)據(jù)類型

      Ctypes提供和c語言兼容的數(shù)據(jù)類型,可以很方便地調(diào)用DLL中的函數(shù)。如Ctypes中的cbyte對應c語言中的char及Python中的int/long。

      ??礢DK頭文件中包含了大量的結構體,在Python中,結構體必須繼承自Ctypes模塊的Structure類。每個子類必須定義_fields_屬性,該屬性是2元素元組的列表,包含字段名和字段類型,其中字段類型必須是Ctypes類型。

      1.4 宏定義

      在??礢DK頭文件中存在大量的宏定義,在Python中可用全局變量來實現(xiàn)。如云臺控制:TILT_UP=21,TILT_DOWN=22。

      1.5 回調(diào)函數(shù)的定義

      回調(diào)函數(shù)是一個通過函數(shù)指針調(diào)用的函數(shù)?;卣{(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用,用于對該事件或條件進行響應。如回調(diào)函數(shù)的原型為:CMPFUNC=CFUNCTYPE(c_int,POINTER(c_int),POINTER(c_int)),第一個參數(shù)c_int表示函數(shù)返回值是int類型。

      2 接口調(diào)用方法

      ??礢DK調(diào)用流程通常為:初始化SDK,用戶登錄,預覽、云臺控制等操作,注銷設備,釋放SDK資源。

      2.1 初始化SDK

      初始化函數(shù)用于完成初始內(nèi)存分配等工作,Python中調(diào)用方法為sdk.NET_DVR_Init()。

      2.2 用戶登錄

      用戶登錄實現(xiàn)用戶的注冊功能,返回用戶ID,該用戶ID具有唯一性,后續(xù)對設備的操作都需要通過此ID實現(xiàn)。Python調(diào)用方法為,sdk.NET_DVR_Login_V30(sDVRIP,wDVRPort,sUserName,sPassword,Ctypes.byref(DeviceInfo)),byref()用來傳遞引用參數(shù),DeviceInfo為設備信息結構體,繼承至Ctypes.Structure。

      2.3 視頻預覽

      視頻預覽模塊實現(xiàn)從網(wǎng)絡設備取實時碼流解碼顯示以及播放控制等功能,Python中調(diào)用方法為sdk.NET_DVR_RealPlay_V40(lUserID,Ctypes.byref(lpPreviewInfo),callBack,pUser) 。其中l(wèi)pPreviewInfo是Ctypes構造的結構體,結構體中l(wèi)pPreviewInfo.hPlayWnd=hwnd為窗口句柄,用于播放圖像。

      2.4 云臺控制

      云臺控制實現(xiàn)攝像機的鏡頭方位調(diào)整及變焦變倍等操作,Python中的調(diào)用方法為:sdk.NET_DVR_PTZControl(lRealHandle,dwPTZCommand,dwStop)。

      2.5 報警布防

      建立報警通道函數(shù)在Python中調(diào)用方法為sdk.NET_DVR_SetupAlarmChan_V41(lUserID,Ctypes.byref(struAlarmParam)),struAlarmParam是Ctypes構造的報警布放參數(shù)結構體。啟動布防前,需要調(diào)用注冊回調(diào)函數(shù)的接口NET_DVR_SetDVRMessageCallBack_V30(),注冊回調(diào)函數(shù)的格式為“回調(diào)函數(shù)實例=回調(diào)函數(shù)類型(具體回調(diào)函數(shù))”,然后將回調(diào)函數(shù)實例作為參數(shù)傳給注冊接口。

      2.6 用戶注銷

      用戶注銷函數(shù)在Python中的調(diào)用方法為sdk.NET_DVR_Logout(lUserID)。

      2.7 釋放資源

      釋放資源函數(shù)在Python中的調(diào)用方法為sdk.NET_DVR_Cleanup(),在程序結束前使用。

      2.8 類的封裝

      將SDK提供的接口進一步封裝到類(class)里,從而簡化SDK接口,解除上層代碼與SDK之間的耦合關系。由于海康SDK只需初始化一次,故這里將類設計為單例模式,將類的函數(shù)設計為靜態(tài)函數(shù)。

      3 結束語

      利用上述方法實現(xiàn)了Python語言與??礢DK的聯(lián)合開發(fā)。用此方法編寫的設備監(jiān)控應用程序運行良好,為后續(xù)系統(tǒng)引入智能識別技術打下了堅實的基礎。

      猜你喜歡
      威視海康調(diào)用
      核電項目物項調(diào)用管理的應用研究
      LabWindows/CVI下基于ActiveX技術的Excel調(diào)用
      測控技術(2018年5期)2018-12-09 09:04:46
      同方威視:手擎高新技術走遍全球
      視界因你更清晰、更智能——評測???600萬“深眸”致清系列攝像機
      海康威視:深度智能助力校園安防升級
      超強腦王來了——評測??低暋昂?党X”全系列產(chǎn)品家族
      只需一秒,看我一眼就通行——評測??得黜俗C通道
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術研究
      海康威視連續(xù)四年蟬聯(lián)全球視頻監(jiān)控第一
      海康人壽保險有限公司
      友谊县| 南宫市| 阳信县| 焦作市| 噶尔县| 苏尼特左旗| 盘锦市| 南城县| 来安县| 佛教| 巫溪县| 廊坊市| 汉源县| 收藏| 白玉县| 海安县| 上林县| 盖州市| 安宁市| 普格县| 资中县| 奇台县| 鹤壁市| 六安市| 迁安市| 德惠市| 东丽区| 正安县| 驻马店市| 乐安县| 商城县| 格尔木市| 刚察县| 星子县| 宜州市| 仙居县| 永仁县| 绥化市| 桐柏县| 班戈县| 永安市|