物候相机开发
物候相机
查找CGI网址:百度开发教材
相机CGI事例:CGI以及其他文档接口
1、获取图片接口:http://admin:tynoo@123@192.168.1.64/streaming/channels/1/picture
2、切换日夜模式,也就是切换IR-cut:使用 PUT 形式:http://admin:tynoo@123@192.168.1.64/ISAPI/Image/channels/1/ircutFilter
提交的是form-data,使用raw方式进行提交<IrcutFilterType>day</IrcutFilterType>
中day代表ir-cut拍摄出来的是RGB照片,night代表拍出来是带红外的照片,所以要切换的话,就需要二次请求:
<?xml version: "1.0" encoding="UTF-8"?><IrcutFilter><IrcutFilterType>day</IrcutFilterType><nightToDayFilterLevel>2</nightToDayFilterLevel></IrcutFilter>
postman上请求如下:
3、需要得到曝光值:http://admin:tynoo@123@192.168.1.64/image/channels/1/exposure
明天进行测试工作
以上的开发文档适合旧版的海康威视的设备。目前已经更新最新ISAPI接口文档。
最新
最新开发加入了 原文链接digest
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author:Administrator
# datetime:2019/9/4 9:32
# software: PyCharm
# Email:zhou.haitao@technosolutions.cn
from requests.auth import HTTPDigestAuth
__auther__ = "Kael"
import os
import requests
import time
import datetime
from ftpUpload import FileUpload
IPCamera_IP = "192.168.1.64"
IPCamera_USERNAME = "admin"
IPCamera_PWD = "tynoo123"
IPCamera_NAME = "tynoo007_100"
FTP_IP = "ftp IP address"
FTP_PORT = 21
FTP_USERNAME = "yourusername"
FTP_PASSWORD = "yourpasswd"
IPCamera_URL = "http://" + IPCamera_IP
IPCamera_IMAGE_URL = IPCamera_URL + "/ISAPI/Streaming/channels/101/picture"
IPCamera_IR_CUT_URL = IPCamera_URL + "/ISAPI/Image/channels/1/ircutFilter"
IPCamera_IR_CUT_DAY_MODEL = '''<?xml version: "1.0" encoding="UTF-8"?><IrcutFilter><IrcutFilterType>day</IrcutFilterType><nightToDayFilterLevel>2</nightToDayFilterLevel></IrcutFilter> '''
IPCamera_IR_CUT_NIGHT_MODEL = '''<?xml version: "1.0" encoding="UTF-8"?><IrcutFilter><IrcutFilterType>night</IrcutFilterType><nightToDayFilterLevel>2</nightToDayFilterLevel></IrcutFilter> '''
def request_download(url, file_name):
r = requests.get(url, auth=HTTPDigestAuth(IPCamera_USERNAME, IPCamera_PWD)) #使用digest 进行认证
with open(file_name, 'wb') as f:
f.write(r.content)
def chunk_download(url, file_name):
r = requests.get(url, stream=True)
with open(file_name, 'wb') as f:
for chunk in r.iter_content(chunk_size=32):
f.write(chunk)
def change_ipcamera_model(url, model):
if requests.put(url, data=model,auth=HTTPDigestAuth(IPCamera_USERNAME, IPCamera_PWD)):
return True
else:
return False
if __name__ == '__main__':
'''
yanfair_3_2019_09_04_153006.jpg
'''
print("Begin of Process By Kael")
# make a dirs to strone the images and metadata
while True:
try:
os.makedirs('./image/', exist_ok=True)
dt_str = datetime.datetime.now().strftime("%Y_%m_%d_%H%M%S")
image_para = {}
image_para["image_RGB_name"] = os.path.join('./image', IPCamera_NAME + "_" + dt_str + ".jpg")
image_para["image_RGB_meta"] = os.path.join('./image', IPCamera_NAME + "_" + dt_str + ".meta")
image_para["image_IR_name"] = os.path.join('./image', IPCamera_NAME + "_IR" + "_" + dt_str + ".jpg")
image_para["image_IR_meta"] = os.path.join('./image', IPCamera_NAME + "_IR" + "_" + dt_str + ".meta")
# 1 makesure the ipcamera model is RGB and 5 seconds
change_ipcamera_model(IPCamera_IR_CUT_URL, model=IPCamera_IR_CUT_DAY_MODEL)
time.sleep(10)
# 2 download the RGB picture
print("Begin download {} picture".format(image_para["image_RGB_name"]))
request_download(IPCamera_IMAGE_URL, image_para["image_RGB_name"])
# 3 write the IPCamera exposure to the RGB meta file
with open(image_para["image_RGB_meta"], "w")as fobj:
fobj.write("exposure=100\r")
# 4 change the IPCamera model from RGB to IR
change_ipcamera_model(IPCamera_IR_CUT_URL, model=IPCamera_IR_CUT_NIGHT_MODEL)
time.sleep(10)
# 5 download the IR picture
print("Begin download {} picture".format(image_para["image_IR_name"]))
request_download(IPCamera_IMAGE_URL, image_para["image_IR_name"])
# 6 write the IPCamera exposure to the IR meta file
with open(image_para["image_IR_meta"], "w")as fobj:
fobj.write("exposure=100\r")
# 1 makesure the ipcamera model is RGB and 5 seconds
change_ipcamera_model(IPCamera_IR_CUT_URL, model=IPCamera_IR_CUT_DAY_MODEL)
print("End of Process By Kael")
file_list = os.listdir('./image')
for i in file_list:
local_file_path = os.path.join('./image', i)
remote_file_path = os.path.join('/data/' + IPCamera_NAME + '/', i)
FileUpload(FTP_IP, FTP_PORT, FTP_USERNAME, FTP_PASSWORD, local_file_path, remote_file_path).ftp_upload()
os.remove(local_file_path)
except Exception as e:
print(e)
finally:
time.sleep(600)