导入库

pip install opencv-python

代码

  • 网络摄像头
'''
Opencv-python读取IP摄像头视频流
pip install opencv-python
'''import cv2
import datetime
import timeclass Camera_picture:def __init__(self):# 摄像头登录账号self.user = "admin"# 摄像头登录密码self.pwd = "123456"# 摄像头地址:端口self.ip = "192.168.100.108:554"# 截图存储位置self.file_path = "./"# 摄像头窗口名称self.name = "camera"# 连接并获取大华摄像头数据def dahua(self):# channel:通道号,起始为1。例如通道2,则为channel=2# subtype:码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。video_stream_path = f"rtsp://{self.user}:{self.pwd}@{self.ip}/cam/realmonitor?channel=1&subtype=0"cap = cv2.VideoCapture(video_stream_path)  # 连接摄像头# cap.isOpened() 判断摄像头是否连接成功,如果返回True则代表连接成功可以继续操作,如果返回False则代表连接失败print('IP摄像头是否开启: {}'.format(cap.isOpened()))return capdef timing_screenshot(self):'''定时截图'''cap = self.dahua()if cap.isOpened():  # 连接成功cv2.namedWindow(self.name, flags=cv2.WINDOW_FREERATIO)  # 创建一个用于显示画面的窗口last_time = datetime.datetime.now()  # 记录上一次时间while(True):# 逐帧捕获,第一个参数返回一个布尔值(True/False),代表有没有读取到图片;第二个参数表示截取到一帧的图片ret, frame = cap.read()frame = cv2.resize(frame, (500, 300))  # 调整画面大小cv2.imshow(self.name, frame)  # 显示摄像头画面# 定时获取截图cur_time = datetime.datetime.now()  # 当前时间name = self.file_path + str(time.time()) + ".jpg"  # 路径+名称+格式if (cur_time - last_time).seconds >= 10:  # 如果间隔超过10秒就截图cv2.imwrite(name, cap.read()[1])  # 保存摄像头画面last_time = cur_timeprint("画面保存成功")if cv2.waitKey(1) & 0xFF == ord('q'):break# 当一切结束后,释放VideoCapture对象cap.release()  # 释放摄像头cv2.destroyAllWindows()  # 释放所有显示图像窗口else:print("摄像头连接失败,请检查配置")def manual_screenshot(self):'''手动截图'''cap = self.dahua()if cap.isOpened():cv2.namedWindow(self.name, flags=cv2.WINDOW_FREERATIO)while(True):ret, frame = cap.read()frame = cv2.resize(frame, (500, 300))cv2.imshow(self.name, frame)event = cv2.waitKey(1) & 0xFF  # 使用变量if event == ord('s'):  # 按"S"截取图片name = self.file_path + str(time.time()) + ".jpg"cv2.imwrite(name, cap.read()[1])print("画面保存成功")elif event == ord('q'):breakcap.release()cv2.destroyAllWindows()else:print("摄像头连接失败,请检查配置")def get_video_stream(self):'''获取视频流'''cap = self.dahua()if cap.isOpened():  # 连接成功width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))  # 获取视频的宽度height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))  # 获取视频的高度fps = cap.get(cv2.CAP_PROP_FPS)  # 获取视频的帧率# fourcc = int(cap.get(cv2.CAP_PROP_FOURCC))  # 视频的编码# FourCC 是用于指定视频编解码器的4字节代码fourcc = cv2.VideoWriter_fourcc(*"MJPG")writer = cv2.VideoWriter(f"{self.file_path}{str(time.time())}.mp4", fourcc, fps, (width, height))while(True):ret, frame = cap.read()if not ret:  # 返回False退出循环breakwriter.write(frame)  # 视频保存frame = cv2.resize(frame, (500, 300))cv2.imshow(self.name, frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()else:print("摄像头连接失败,请检查配置")if __name__ == '__main__':run = Camera_picture()# run.timing_screenshot()run.get_video_stream()# run.manual_screenshot()
  • USB摄像头
'''
Opencv-python读取USB摄像头视频流
pip install opencv-python
'''import cv2def usb_camera():'''usb摄像头连接'''cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 连接摄像头if cap.isOpened():  # 连接成功while(True):ret, frame = cap.read()# frame = cv2.flip(frame, 1)  # 摄像头是和人对立的,将图像左右调换回来正常显示cv2.imshow("Usb Capture", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()else:print("摄像头连接失败,请检查摄像头连接是否正常")if __name__ == '__main__':usb_camera()

python_获取网络(大华)摄像头画面,并存储为图片和视频相关推荐

  1. 音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面

    一.大华摄像头的RTSP地址格式 rtsp地址格式: rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0 ...

  2. 网页集成大华摄像头以及回放功能2019.11.14

    公司项目需要页面集成大华摄像头画面,并实现回放功能.经过咨询大华相关人员给出两种方式,一种是基于OCX插件的网页集成,另一种是基于大华webplugin网页插件的集成. OCX插件需要与大华的DSS平 ...

  3. Qt获取大华摄像头监控画面(RTSP流方式)

    一.与摄像头建立连接 1.RTSP格式 //格式 rtsp://username:password@<address>:<port>/Streaming/Channels< ...

  4. 大华摄像头使用外网接收数据

    获取摄像头数据的方法 方法有几种 1 rtsp 获取后转发到外网 2 直接配置大华摄像头发送到外网 第一种方法有缺陷,不直接,需要转发服务,但是一种比较可靠的方法,如果网络中不能直接发出去,只能通过转 ...

  5. 大华摄像头java开发之抓图

    大华摄像头java开发之抓图 继上一个海康的项目之后,这个月开始了大华网络摄像头的二次开发,在写正式的内容之前先容我吐槽一下: 首先就是从官网下载的Demo,里面只有C写的,让我一个java开发怎么看 ...

  6. WEB页面播放大华摄像头视频解决方案

    目前在网页上播放大华摄像头视频,有如下2种途径: 1)首选获取摄像头的hls协议地址,H5可直接播放 2)获取摄像头rtsp协议地址,用ffmpeg转换成hls再播放 近期做的一个项目,需要在WEB端 ...

  7. 华为海康大华摄像头编译RTSP转RTMP和HTTPFLV

    华为海康大华摄像头编译RTSP转RTMP和HTTPFLV 项目需求要看摄像头实时画面谷歌浏览器不支持RTSP流直接展示 方案一 通过Java+nginx+rtsp转rtmp流 方案二 通过Java+ ...

  8. H5无插件实现实时海康、大华摄像头网页预览

    H5无插件实现实时海康.大华摄像头网页预览 前景概述 功能特点 效果 http接口管理 流列表接口 实现过程 解决的问题 前景概述 最近项目中需要用到"网页实时预览网络摄像头"功能 ...

  9. 大华摄像头二次开发-web端实现实时视频监控

    最近客户提需要,需要在现有的系统中集成视频监控功能,摄像头是大华的.而大华又没有关于java的sdk,官网只能下载到c++的demo和dll文件.无奈只能自己在网上找了,最后找到了一些解决办法,把实现 ...

最新文章

  1. oracle中的exists 和 not exists 用法详解
  2. 《Science》刊登中科院最新突破,用二氧化碳合成淀粉,网友已开始安排诺贝尔奖...
  3. linux系统盘满了,mysql启动不了
  4. 2.4.1 死锁的概念
  5. 【RAC】How to Proceed from Failed 11gR2 CRS Installation
  6. AOP就是面向切面编程,我们可以从几个层面来实现AOP。 ![](https://upload-im
  7. 【Yarn】Yarn 命令详解
  8. android platform下载地址
  9. JAVA 他人博客收藏 (To be continue)
  10. 用Windows Live Writer写51cto博客
  11. 2017年软考程序员考试填涂答题卡(纸)注意事项
  12. 数码管超声波c语言黑51,51单片机开发板-超声波测距-数码管显示
  13. 不能被编辑的html文档,word不能编辑怎么办 Word文档怎么设置成不可编辑?
  14. 利用python的requests爬取高清壁纸
  15. libusb-win32的使用教程和例子
  16. Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered d
  17. vscode下载太慢,快速下载vscode方法!
  18. 面向 Java 开发人员的区块链链代码
  19. js获取对象的方法,根据id、根据name、根据标签名、根据类名
  20. [C语言] 一维数组

热门文章

  1. linux系统挂载u盘步骤和命令,如何在linux中挂载U盘/硬盘
  2. 富士康对苹果死心塌地,然而突然传出的消息却让富士康懵了
  3. 安装Adobe软件提示Error怎么解决?
  4. NISP和CISP信息安全相关证书有哪些?都代表什么|NISP管理中心
  5. TOFEL Speaking 托福口语 —— 模板
  6. Flutter高仿微信-第31篇-单聊-表情
  7. app备忘录源代码html,备忘录app.html
  8. 全国省、市、县区的数据,含拼音
  9. 为什么 Github 可以加分
  10. criteriabuilder 不等于_所有电器功率都用瓦,为什么空调要用匹?一匹等于多少瓦?...