python 写一个连接海康相机并可以拍照录视频 代码实现
时间: 2023-06-05 22:07:38 浏览: 365
以下是 Python 连接海康相机并可以拍照录视频的示例代码:
```python
import cv2
# 海康相机的用户名和密码
username = "admin"
password = "123456"
# 相机的 IP 地址和端口号
ip_addr = "192.168.1.10"
port = 8000
# 相机的 RTSP 流地址
rtsp_url = f"rtsp://{username}:{password}@{ip_addr}:{port}/Streaming/Channels/101"
# 创建 VideoCapture 对象
cap = cv2.VideoCapture(rtsp_url)
# 检查连接是否成功
if not cap.isOpened():
print("无法连接相机!")
exit()
# 按 q 键退出循环
while True:
# 读取一帧图像
ret, frame = cap.read()
if not ret:
print("无法读取视频帧!")
break
# 显示图像
cv2.imshow("Video", frame)
# 按空格键拍照
if cv2.waitKey(1) == ord(" "):
# 保存图像
cv2.imwrite("photo.jpg", frame)
print("已保存图片!")
# 按回车键录制视频
if cv2.waitKey(1) == ord("\r"):
# 创建 VideoWriter 对象
writer = cv2.VideoWriter("video.avi", cv2.VideoWriter_fourcc(*"MJPG"), 30, (frame.shape[1], frame.shape[0]))
print("开始录制视频!")
# 录制视频直到按 ESC 键结束
while True:
# 读取一帧图像
ret, frame = cap.read()
if not ret:
print("无法读取视频帧!")
break
# 写入视频帧
writer.write(frame)
# 显示图像
cv2.imshow("Video", frame)
# 按 ESC 键结束录制
if cv2.waitKey(1) == 27:
break
# 释放 VideoWriter 对象
writer.release()
print("录制视频已结束!")
# 按 ESC 键退出循环
if cv2.waitKey(1) == 27:
break
# 释放 VideoCapture 对象
cap.release()
# 关闭所有窗口
cv2.destroyAllWindows()
```
要使用该代码,需确保计算机已安装 OpenCV 库和相应的海康插件,且相机的 RTSP 流地址正确无误。
阅读全文