verify_ptz.py 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. import sys
  2. import cv2
  3. import time
  4. sys.path.insert(0, '/home/admin/dsh/dual_camera_system')
  5. from dual_camera_system.dahua_sdk import DahuaSDK
  6. from dual_camera_system.ptz_camera import PTZCamera
  7. from config.camera import CAMERA_GROUPS, SDK_PATH
  8. ptz_cfg = CAMERA_GROUPS[0]['ptz']
  9. lib_path = SDK_PATH['lib_path'] + '/' + SDK_PATH['netsdk']
  10. sdk = DahuaSDK(lib_path)
  11. print('SDK init:', sdk.init())
  12. ptz = PTZCamera(sdk, ptz_cfg)
  13. print('Connect:', ptz.connect())
  14. time.sleep(1)
  15. for x_ratio, y_ratio in [(0.5, 0.5), (0.8, 0.6), (0.2, 0.5)]:
  16. pan, tilt, zoom = ptz.calculate_ptz_position(x_ratio, y_ratio)
  17. print(f'({x_ratio},{y_ratio}) -> pan={pan:.1f} tilt={tilt:.1f} zoom={zoom}')
  18. ptz.goto_exact_position(pan, tilt, zoom)
  19. time.sleep(5)
  20. cap = cv2.VideoCapture(ptz_cfg['rtsp_url'], cv2.CAP_FFMPEG)
  21. ret, frame = cap.read()
  22. cap.release()
  23. if ret and frame is not None:
  24. fname = f'/home/admin/dsh/verify_{x_ratio}_{y_ratio}.jpg'
  25. cv2.imwrite(fname, frame)
  26. print('Saved', fname, frame.shape)
  27. ptz.disconnect()
  28. sdk.cleanup()