搜罗了网上一些关于如何在python中实现海康威视相机的连接与画面播放的资料,最直接的方式是通过rtsp流来实现。
海康的rtsp协议格式如下(参考:
海康相机使用RTSP
):
rtsp://[username]:[passwd]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
主码流:
rtsp://admin:12345@192.168.1.64:554/h264/ch1/main/av_stream
rtsp://admin:12345@192.168.1.64:554/MPEG-4/ch1/main/av_stream
子码流:
rtsp://admin:12345@192.168.1.64/mpeg4/ch1/sub/av_stream
rtsp://admin:12345@192.168.1.64/h264/ch1/sub/av_stream
对于刚买的网络相机,需要你更改相机的IP,将其更改到与自己电脑同一个网段,即前三个地址一致。并且设置好相机的用户名和密码。
方式一:网页预览
打开电脑的IE浏览器(或其他浏览器),在地址栏输入你的相机的IP地址,如果还是全新的相机,请去海康官网下载SADP软件来更改相机的IP并激活相机(
海康威视相机配置流程
)。例如我在浏览器输入:192.168.1.64 然后网页显示登录界面如下:
输入 相机的用户名和密码登录,在预览选项中可实时查看画面
方式二:VLC视频播放器预览
打开你的VLC media player视频播放器,选择 媒体->打开网络串流,在打开媒体->网络->请输入网络URL中填写上面提到的rtsp格式的URL;
VLC下载地址
然后点击播放,即可在该播放器中实时预览相机视频画面;
方式三:python读取rtsp流
其中将下面的代码中的相应内容替换成你的就OK了,如相机用户名,密码,IP地址和端口号(常见为554)
import cv2
cap = cv2.VideoCapture("rtsp://username:passport@ip:port/Streaming/Channels/1")
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()
运行上述代码需要你安装相应的opencv库,我在anaconda下运行的,装的是opencv-python库。还需要你去官网下载海康的SDK(针对自己的电脑系统环境下载对应版本)将里面的HCNetSDKCom文件夹放在python代码同目录下!
方法三会出现画面卡顿的现象,具体原因分析可参考:网络摄像机画面卡顿的主要原因有哪些? 视频花屏分析
补充资料:
NTPLIB时间同步问题:
Python通过NTP同步获取时间方法
python ntp服务器同步时间
使用python同步PC本地时间
Python中的NTP时间同步
https://www.cnblogs.com/general-seven/p/5893744.html
搜罗了网上一些关于如何在python中实现海康威视相机的连接与画面播放的资料,最直接的方式是通过rtsp流来实现。海康的rtsp协议格式如下(参考:海康相机使用RTSP):rtsp://[username]:[passwd]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream主码流:rtsp://admin:12345@192.168....
1.视频保存失败,可能是电脑上没有装相应的解码工具。
方案1:将out = cv2.VideoWriter(name_text.get()+'.avi', fourcc, 20, (640, 480))中的第二个参数 fourcc换成-1,这样可以在运行的时候跳出来一个弹框,然后手动选择哪个可以使用,运气好的话第一个就可以用,不过也有都不能成功的情况
方案2:下载xvid 然后将fo
import cv2
url = 'rtsp://admin:我的密码@我的摄像头IP如169.254.115.55:554/h264/ch1/main/av_stream'
cap = cv2.VideoCapture(url)
while(cap.isOpened()):
通过python调用海康威视工业摄像头并进行图像存储问题(数据流获取问题未能解决)
先说情况,本人是做视觉检测的需要高倍率摄像头进行实时检测,也就是需要深度学习进行图片数据处理,但是这个又是python来进行分析,而海康威视主要程序代码是以C为主的,传过来的数据我也尝试的去解析都是不能转化成python的BGR图像。
具体参照了:通过cv2调用海康威视摄像头,但这个不能调用工业摄像头,通过官方给一个400什么软件要激活摄像头,可是却并不能检测到工业摄像头,通过mvs软件调用到摄像头地址进行测试也无法获取到摄
# 将OpenCV图像转换为PIL图像
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
image = Image.fromarray(image)
# 将PIL图像转换为ImageTk格式,以便在tkinter中显示
photo = ImageTk.PhotoImage(image)
label.config(image=photo)
label.image = photo
# 每隔10毫秒更新一次画面
root.after(10, show_frame)
# 启动循环显示画面
show_frame()
# 启动tkinter窗口
root.mainloop()
# 释放摄像头资源
cap.release()
希望能对您有所帮助!
AttributeError:module 'keras.engine.topology' has no attribute 'load_weights_from_hdf5_group_by_name
weixin_46070350:
Anaconda Prompt 怎么切换工作路径到E盘 以及更改默认打开路径
weixin_51457804:
Python调用海康威视网络相机之——python读取相机rtsp码流显示画面
生命不止,学习不息:
ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
m0_47207981:
AttributeError:module 'keras.engine.topology' has no attribute 'load_weights_from_hdf5_group_by_name
PF___: