惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
About on SuperTechFans
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
宝玉的分享
宝玉的分享
美团技术团队
量子位
The Cloudflare Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
爱范儿
爱范儿
J
Java Code Geeks
博客园 - Franky
Last Week in AI
Last Week in AI
B
Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
GbyAI
GbyAI
Recent Announcements
Recent Announcements
小众软件
小众软件
H
Help Net Security
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
Python 调用海康威视 摄像头 显示预览画面
Yiwei Zhang · 2024-05-22 · via 又见苍岚

本文记录Python 调用海康威视摄像头,开启预览画面的方法。

准备工作

  1. 安装好 Python , Opencv-python
  2. 配置测试机与摄像头 IP,二者在同一个网段

rtsp

支持 RTSP(Runtime Stream Protocol)协议的摄像头可以很方便地用 opencv i调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#coding=utf-8
import cv2

ip_str = '192.168.1.64'
rtsp_port = '554'

url = "rtsp://admin:password@" + ip_str + ":" + rtsp_port + "/Streaming/Channels/2"
cap = cv2.VideoCapture(url)
ret,frame = cap.read()
while ret:
ret,frame = cap.read()
cv2.imshow("frame",frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cv2.destroyAllWindows()
cap.release()

hikvisionapi

也可以用第三方 API 实现,不过这个 API 文档写的不好,网上资料也不多,我勉强搞了个能显示模糊图像的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 导入必要的库
import cv2
from hikvisionapi import Client
import numpy as np
import io
from PIL import Image

def string_to_image(string, width, height):
image = Image.frombytes('RGB', (width, height), string)
return image

# 连接到摄像头
cam_ip = 'http://192.168.1.64'
cam_username = 'admin'
cam_password = 'password'
cam = Client(cam_ip, cam_username, cam_password)

# Dict response (default)
response = cam.System.deviceInfo(method='get')

# 打印设备的信息
print(response)

cam.Streaming.channels[101]

while True:
response = cam.Streaming.channels[101].picture(method='get', type='opaque_data')
response2 = cam.Streaming.channels[101].picture_url
data = response.iter_content(chunk_size=999999)
for chunk in data:
image = Image.open(io.BytesIO(chunk))
cv2.imshow('Video Stream', np.array(image))

# 按下q键退出循环
if cv2.waitKey(1) & 0xFF == ord('q'):
break

官方例程

搞了半天都是 bug 没跑起来,后续更新吧。

参考资料

文章链接:
https://www.zywvvd.com/notes/study/camera-imaging/hk-python-video-preview/hk-python-video-preview/