通過海康螢石API控制家里相機的云臺及抓圖

通過海康螢石API控制家里相機的云臺及抓圖

    • 一、背景
    • 二、環境準備
      • 2.1 注冊開發者賬號
      • 2.2 安裝依賴庫
      • 2.3 創建`.`env`文件
    • 三、代碼片段解釋
      • 3.1 加載并使用環境變量
      • 3.2 發送HTTP請求的封裝函數
      • 3.3 獲取AccessToken
      • 3.4 分頁查詢設備列表
      • 3.5 抓拍圖片
      • 3.6 開始云臺控制
      • 3.7 控制云臺并抓拍圖片
    • 四、完整的代碼
    • 五、參考鏈接

一、背景

在智能家居時代,攝像頭已經成為我們生活中不可或缺的一部分。很多朋友都選擇使用海康威視或螢石攝像頭來監控家中的情況。然而,只用它們的原生App來進行云臺控制和抓圖似乎并不夠靈活方便。借助于海康威視和螢石提供的API,我們可以通過編寫自定義代碼來實現更加智能化、定制化的攝像頭控制。

在這篇技術博客中,我將帶你了解如何利用Python完成家里攝像頭的云臺控制及抓圖操作。無論您是一個熱愛DIY家居的創客、還是一個追求極致體驗的智能家居愛好者,希望這篇博客都能幫助您更好地掌握這一技術。

二、環境準備

2.1 注冊開發者賬號

訪問螢石開放平臺,完成以下步驟:

  1. 創建新應用
  2. 獲取AppKey和Secret(相當于API的賬號密碼)
  3. 綁定需要控制的攝像頭設備

為什么需要AppKey和Secret?
這是API訪問的身份憑證,確保只有授權用戶才能操作設備。就像銀行賬戶需要密碼才能操作一樣。

2.2 安裝依賴庫

首先,我們需要安裝python-dotenv庫來讀取環境變量。打開終端并運行以下命令:

pip install python-dotenv requests

上面這條命令同時會安裝requests庫,它是Python中發送HTTP請求的標準庫。

2.3 創建.env`文件

為了保密和安全起見,我們將把一些敏感信息(比如AppKey和Secret)存放在環境變量中。在項目根目錄下創建一個名為.env的文件,并添加以下內容:

AppKey=你的AppKey
Secret=你的Secret

三、代碼片段解釋

3.1 加載并使用環境變量

首先我們需要通過讀取環境變量獲取到你的AppKeySecret,這些信息將用于認證你的請求。

from dotenv import load_dotenv
import os
import requests# 加載環境變量
load_dotenv()
AppKey = os.getenv("AppKey")
Secret = os.getenv("Secret")

3.2 發送HTTP請求的封裝函數

接下來,我們需要一個函數來封裝常用的HTTP POST請求操作。

def http_requests(url, data):headers = {'Content-Type': 'application/x-www-form-urlencoded'}print(f'Request URL: {url}')response = requests.post(url, headers=headers, data=data)response.raise_for_status()  # 檢查是否成功return response.json()

3.3 獲取AccessToken

首先我們要獲取accessTokenaccessToken是一個認證令牌,用于通過驗證來訪問海康威視提供的API。

def get_accessToken():url = 'https://open.ys7.com/api/lapp/token/get'data = {"appKey": AppKey, "appSecret": Secret}try:return http_requests(url, data)["data"]['accessToken']except requests.exceptions.RequestException as e:print("Error:", e)return None

關鍵點說明

  • 獲取到的accessToken有效期是7天
  • 每次API調用都需要攜帶此令牌
  • 實際生產環境需要實現令牌刷新機制

3.4 分頁查詢設備列表

通過accessToken,我們可以獲取到所有綁定了應用的設備。

def list_devices(accessToken):url = 'https://open.ys7.com/api/lapp/device/list'data = {"accessToken": accessToken, "pageStart": 0, "pageSize": 10}try:response_data = http_requests(url, data)return [(x['deviceSerial'], x['deviceName']) 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81878.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81878.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81878.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

XCUITest 是什么

XCUITest(全稱 Xcode UI Test)是蘋果官方提供的 iOS/macOS UI 自動化測試框架,集成在 Xcode 開發工具中,專門用于測試 Swift/Objective-C 開發的應用程序。 1. XCUITest 的核心特點 ? 官方支持:蘋果原生框架&#xf…

mapbox高階,PMTiles介紹,MBTiles、PMTiles對比,加載PMTiles文件

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??Fill面圖層樣式1.4 ??PMTiles介紹1.5…

5.0以上版本antv/g6使用心得

1. 畫布只重新渲染數據 graph.render graph.drawgraph,fitview()graph.fitCenter()setData塞入新的數據 const updateGraph (data) > {if (!graph) {console.warn("Graph is not initialized");return;}graph.clear();graph.setData(data);graph.render(); };…

4.5V~100V, 3.8A 峰值電流限, 非同步, 降壓轉換器,LA1823完美替換MP9487方案

一:綜述 LA1823 是一款易用的非同步,降壓轉換器。 該模塊集成了 500mΩ 低導通阻抗的高側 MOSFET。LA1823 使用 COT 控制技術。此種控制方式有利于快速動態響應,同時簡化了反饋環路的設計。LA1823 可以提供最大 2A 的持續負載電流。LA1823有150kHz/240kH…

如何定位并優化慢 SQL?

如何定位并優化慢 SQL? 一、慢 SQL 的定義與影響 1.1 什么是慢 SQL? 慢 SQL是指執行時間超過預期閾值的SQL語句,通常由以下特征: 執行時間超過慢查詢閾值(如MySQL默認10秒)消耗大量CPU/IO資源導致連接堆積或系統負載升高關鍵結論:慢SQL是數據庫性能瓶頸的主要誘因,可…

提升WSL中Ubuntu編譯速度的完整指南

在 WSL(Windows Subsystem for Linux)中使用 make 編譯項目時,如果發現編譯速度非常慢,通常是由以下幾個原因導致的。以下是一些常見的排查和優化方法: 🔍 一、常見原因及解決方案 ? 1. 文件系統性能問題…

77. 組合【 力扣(LeetCode) 】

文章目錄 零、原題鏈接一、題目描述二、測試用例三、解題思路四、參考代碼 零、原題鏈接 77. 組合 一、題目描述 給定兩個整數 n 和 k,返回范圍 [1, n] 中所有可能的 k 個數的組合。 你可以按 任何順序 返回答案。 二、測試用例 示例 1: 輸入&…

C++中指針與引用的區別詳解:從原理到實戰

C中指針與引用的區別詳解:從原理到實戰 1. 引言:指針與引用的重要性 在C編程中,指針和引用是兩個極其重要的概念,也是許多初學者容易混淆的地方。作為C的核心特性,它們直接操作內存地址,提供了對內存的直…

WebFuture:網站部分圖片突然無法顯示的原因

問題描述: 主站群遷移到linux系統后,原先部署在windows下的子站群節點部分圖片無法顯示。 原因分析: 檢查無法顯示的圖片的路徑,發現調用的是原先主站的圖片。主站重新部署到linux系統后,圖片路徑會區分大小寫所以統…

uniapp使用Canvas生成電子名片

uniapp使用Canvas生成電子名片 工作中有生成電子名片的一個需求&#xff0c;剛剛好弄了發一下分享分享 文章目錄 uniapp使用Canvas生成電子名片前言一、上代碼&#xff1f;總結 前言 先看效果 一、上代碼&#xff1f; 不對不對應該是上才藝&#xff0c;哈哈哈 <template…

PostgreSQL ALTER TABLE 命令詳解

PostgreSQL ALTER TABLE 命令詳解 引言 PostgreSQL 是一款功能強大的開源關系型數據庫管理系統&#xff0c;它提供了豐富的命令來幫助數據庫管理員和開發者管理數據庫中的表。其中&#xff0c;ALTER TABLE 命令是 PostgreSQL 中最常用的命令之一&#xff0c;用于修改表的結構…

Kafka KRaft + SSL + SASL/PLAIN 部署文檔

本文檔介紹如何在 Windows 環境下部署 Kafka 4.x&#xff0c;使用 KRaft 模式、SSL 加密和 SASL/PLAIN 認證。stevensu1/kafka_2.13-4.0.0 1. 環境準備 JDK 17 或更高版本Kafka 4.x 版本&#xff08;本文檔基于 kafka_2.13-4.0.0&#xff09; 2. 目錄結構 D:\kafka_2.13-4.…

MQTT協議,EMQX部署,MQTTX安裝學習

一、MQTT概述 1.什么是MQTT MQTT是一種基于“發布訂閱“”模式的消息傳輸協議。 消息&#xff1a;設備和設備之間傳輸的數據&#xff0c;或者服務和服務之間要傳輸的數據。 協議&#xff1a;傳輸數據時所遵循的規范。 2.常見的通訊模式 &#xff08;1&#xff09;客戶端-服…

Java Web 開發詳細流程

&#x1f9ed; 一、項目立項與需求分析階段&#xff08;0%&#xff09; 1.1 商業需求確認 與產品經理溝通核心業務目標 目標&#xff1a;構建一個圖書管理系統用戶&#xff1a;圖書管理員、普通用戶功能&#xff1a;登錄、查看、增刪改圖書、權限控制、分頁、搜索 1.2 輸出文…

學習路之PHP--easyswoole_panel安裝使用

學習路之PHP--easyswoole_panel安裝使用 一、新建文件夾二、安裝三、改配置地址四、訪問 IP:Port 自動進入index.html頁面 一、新建文件夾 /www/wwwroot/easyswoole_panel 及配置ftp 解壓easyswoole_panel源碼 https://github.com/easyswoole-panel/easyswoole_panel 二、安…

軟件設計綜合知識

software-design 軟考中級-軟件設計師-綜合知識&#xff1a;計算機系統基礎、操作系統、計算機網絡與信息安全、程序語言基礎、數據庫基礎、數據結構與算法、軟件工程基礎知識、標準與知識產權等。 —— 2025 年 3 月 5 日 甲辰年二月初六 驚蟄 目錄 software-design1、計算機基…

海思 35XX MIPI讀取YUV422

1.項目背景&#xff1a; 使用海思芯片&#xff0c;接收FPGA發送的MIPI數據&#xff0c;不需要ISP處理&#xff0c;YUV圖像格式為YUV422。 2.移植MIPI驅動 修改IMX347的驅動遠嗎&#xff0c;將I2C讀寫的部分注釋&#xff0c;其他的不用再做修改。 int imx347_slave_i2c_init(ot…

算力租賃革命:彈性模式如何重構數字時代的創新門檻?

一、算力革命&#xff1a;第四次工業革命的核心驅動力? 在科技飛速發展的當下&#xff0c;我們正悄然迎來第四次工業革命。華為創始人任正非在一場程序設計競賽中曾深刻指出&#xff0c;這場革命的基礎便是大算力。隨著 5G、人工智能、大數據、物聯網等信息技術的迅猛發展&am…

改寫自己的瀏覽器插件工具 myChromeTools

1. 起因&#xff0c; 目的: 前面我寫過&#xff0c; 自己的一個瀏覽器插件小工具 最近又增加一個小功能&#xff0c;可以自動滾動頁面&#xff0c;尤其是對于那些瀑布流加載的網頁。最新的代碼都在這里 2. 先看效果 3. 過程: 代碼 1, 模擬鼠標自然滾動 // 處理滾動控制邏輯…

深度學習篇---OC-SORT簡介

OC-SORT&#xff08;Observation-Centric SORT&#xff09;是一種以觀測為中心的多目標跟蹤算法&#xff0c;旨在解決傳統 SORT 算法在目標遮擋、外觀變化和復雜交互場景下關聯準確性不足的問題。以下是其詳細介紹&#xff1a; 核心創新點 以觀測為中心的在線平滑&#xff08…