海康威视臻全彩网络摄像头在远程天文台的应用

海康威视臻全彩网络摄像头在远程天文台的应用

远程天文台用摄像头的目的:

  • 捕获流星视频
  • 拍星空延时
  • 查看望远镜当前姿态

对摄像头的要求:

  • 不能有可见光补光、也不能有红外补光。会对天文摄影造成干扰
  • 耐低温、不凝结。台址在华北以北,冬季气温低
  • 有软件控制的云台
  • 支持RTSP视频流
  • 越高清越好,视角不宜过广,否则看不清星星

2021年底,我试过IMX291、海康威视C8W、小蚁摄都有各种各样的问题,最终选择了海康威视臻全彩DS-2CD3T87WD-L 4mm焦距(正考虑换2.8mm的),这是一款800万像素的低照度全彩摄像头,可在没有任何补光的情况下可以拍出彩色的画面,照度低至0.0005,关于它的详细参数见官网,营销信息参考淘宝 。

海康威视臻全彩DS-2CD3T87WD-L大部分情况下都是接硬盘录像机使用,与日常使用的USB摄像头不同,网络摄像头不能被常见软件直接识别调用,需要将网络摄像头模拟为本地摄像头。

云台使用的是https://item.taobao.com/item.htm?id=593470869933 看上去使用的是Modbus TCP/IP控制,没空研究了,用自带的软件凑合用

海康威视臻全彩网络摄像头模拟成本地摄像头

  1. 将海康威视臻全彩DS-2CD3T87WD-L接通在局域网内,保证和电脑在同一局域网内;
  2. 下载安装Hikvision Tools(原名SADPTool) 找到局域网内摄像头的IP
  3. 通过浏览器访问摄像头IP,比如我的是10.0.0.10,输入默认管理员用户名密码admin,进入摄像头自己的管理界面,首次使用需要激活,根据提示进行
  4. 大部分采用默认设置即可,场景改为低照度这样就关闭了补光,码率改为定码率帧率调到最高;关闭OSD水印或设置一个酷酷的名字;NTP时间服务使用阿里云的ntp.aliyun.com;为了获得更好的清晰度,后面所使用的都是RTSP主码流
  5. 电脑上按照顺序下载并安装
  1. 用VLC播放器测试网络摄像头的RTSP协议,海康威视的RTSP输出流地址格式是:rtsp://admin:摄像头密码@摄像头IP地址:554/h264/ch1/main/av_stream,输入到VLC中进行播放测试,看到实时画面说明摄像头设置完成
  2. 打开OBS软件,在视频源中添加并选择GStreamer Source
  3. 在弹出的窗口中,Pipeline一项将rtsp地址替换为自己的,如:rtspsrc location="rtsp://admin:xxxxxx@10.0.0.10:554/h264/ch1/main/av_stream" latency=0 buffer-mode=auto ! rtph264depay ! h264parse ! d3d11h264dec ! video. 注意不要有换行。
  4. 设置好后,在工具菜单-启用虚拟摄像头即可,Target Camera就是虚拟出来本地摄像头的名字。OBS软件不要关

流星捕获和延时拍摄

流星捕获使用的软件是UFocaptureHD,可以看到刚才虚拟出来的摄像头了

参考星空π对Terry老师的文章《UFOCaptureHD2 快速指南》 http://pi.bestxtech.com/ufocapture/index/

延时拍摄可以使用ffmpeg或者python+opencv通过摄像头的rtsp协议获取图像截图保存,例如代码:

import cv2
def get_img_from_camera_net(folder_path):
    cap = cv2.VideoCapture("rtsp://xxxxx/ch1/stream1")#获取网络摄像机
    
    i = 1
    while i<3:
        ret, frame = cap.read()
        cv2.imshow("capture", frame)
        print (str(i))
        cv2.imwrite(folder_path + str(i) + '.jpg', frame)# 存储为图像
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
        i += 1
    cap.release()
    cv2.destroyAllWindows()
 
# 测试
if __name__ == '__main__':
    folder_path = 'D:\Anacon\\'
    get_img_from_camera_net(folder_path)


评 论