相关文章推荐
爱热闹的作业本  ·  Microsoft VBScript ...·  1 年前    · 
还单身的熊猫  ·  VBA之MSForms.DataObject ...·  1 年前    · 
坚韧的哑铃  ·  python ...·  1 年前    · 
opencv获取IP摄像头(IP-camera)实时视频流

之前这篇文章讲了如何通过网络摄像头(web camera)获取实时视频流,但是这种方法的缺陷就是摄像头和主机必须连在一起,那这种在室外部署的时候就会非常麻烦并且不安全,所以后来找了下用海康威视或者大华的监控摄像头,然后通过IP地址可以无线获取视频流,这样就实现了主机和摄像头分开,方便部署。

1.设备

这里用的是海康的鱼眼摄像头,型号是DS-2CD3955FWD-IWS,其实基本上能支持sdk二次开发的IP摄像头都可以( 参考这里 )。鱼眼摄像头相比普通的摄像头经过扭曲,因此在应用的时候一般需要进行 反扭曲 ,这一步会造成比较大的延迟,因此没有不是特定需求的话尽量使用普通的就可以。
注: 海康的萤石系列貌似并不能通过RTSP地址获取,而这里的方法需要用RTSP进行视频流获取,所以无法萤石系列就不在此列。

2.通过RTSP地址获取视频流

首先需要知道海康设备的RTSP地址,可以通过 这里 进行查看。

import cv2
source = ""rtsp://admin:12345@192.168.1.64/Streaming/Channels/1"

: admin和12345分别是ip camera的用户名和密码,在浏览器上第一次登录摄像头的时候会进行设置;

192.168.1.64是摄像头的默认IP,在浏览器中输入即可进入登录页面(如下);

python调用海康摄像头 opencv读取海康网络摄像头_IP


Channels/1和Channels/2分别对应主码流和子码流地址,两者的分辨率不同。IP摄像头无法通过opencv调节分辨率,只能在海康的监控界面的配置进行设置(如下)。

python调用海康摄像头 opencv读取海康网络摄像头_opencv_02

3. 摄像头校准(calibration)(optional)

这个配置有很多,而且官方提供的校准文档很详细(戳 这里 ),就不具体细讲了。需要python版本的代码的话可以直接fork 这里 ;如果是c++版本的话可以参考 这里

参考

http://docs.opencv.org/3.0-beta/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#calibratecamera https://stackoverflow.com/questions/35489873/i-need-hikvision-camera-which-has-ip-20-0-0-14-and-user-name-password-is-admin-1 https://github.com/XinningShen/Fisheye_Camera_Calibration/blob/master/GetCameraCalibrationCoefficient.py https://github.com/smidm/opencv-python-fisheye-example/blob/master/fisheye_example.py https://www.ispyconnect.com/man.aspx?n=Hikvision


public class BreakBemo03 { public static void main(String[] args) { Scanner input=new Scanner(System.in); double balance=100.0; boolean flag=true

javascript外部函数调用 js调用外部应用

在上一篇中就已经提供了一种方法,就是通过自己写OCX 给OCX 传入路径,通过OCX 启动应用程序。当然这种方法可扩展性很多,不一定是启动应用程序了。今天提供另一种比较简单的可以启动应用程序的方法,不需要编写OCX ,这个方法也是借鉴于博友的指点。<html> <meta http-equiv="Content-Type" con

python读取数组长度 python读取数组文件

从文件中加载ndarray数组从文本文件中加载ndarray数组 np.loadtxt >>> np.loadtxt(textfile) # textfile是文本文件从.npy或者.npz文件中加载ndarray数组np.load如果是.npy结尾的文件,则返回单个ndarray数组 如果是.npz结尾的文件,则返回一个字典类型对象,{filename: array}>&

python 文件diff python 文件追加写入文件

f=open("guru99.txt", "a+")加号,它表示如果它不存在,它将创建一个新文件。假如已经有了文件,就不需要创建一个新的文件。写成a就行了。 同时使用两个文件有时你可能想要读取文件并同时写入另一个文件。如果你使用在学习如何写入文件时显示的示例,它实际上可以合并到以下内容中:d_path = 'dog_breeds.txt' d_r_path = 'dog_breeds_r