1、下载手机软件

在手机上需要下载IP摄像头软件,可以通过内置RTSP和HTTP服务器把手机设备变成包含双向音频支持的无线IP摄像头并用于安全监控,你可以使用电脑上的浏览器查看,在这里我用OpenCV读取视频流并进行录屏操作

2、获取视频流地址

打开下好的软件,点击“打开IP摄像头服务器”,可以获得在当前内网下,视频流的地址,在这里我选择第一个RTSP协议的视频流,访问时需要输入账号密码,默认都为admin

3、代码编写

3.1 读取视频流

新建VideoCapture对象,读取视频流

cap = cv2.VideoCapture("rtsp://admin:admin@******.local:8554/live")

3.2 显示视频

用while语句循环读取视频,并显示出来

while True:success,img = cap.read()cv2.imshow("camera",img)

3.3 录制视频

新建VideoWriter对象,将图像写入视频,需要指定几个参数

  1. 表示读取的视频帧所存放的新的文件
  2. 指的是视频存放的编码格式
  3. 表示每秒的帧数
  4. 表示图像的长宽大小
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
size = (int(self.capture.get(cv2.CAP_PROP_FRAME_WIDTH)), \int(self.capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter("name.mp4", fourcc, 25, self.size)
out.write(img)    #将图片写入视频

4、效果展示

5、代码展示

根据上面的思路,我对代码进行了一些封装和优化,通过使用空格键进行录制的开始和结束,按下ESC键可退出程序,还在视频中显示了当前的录制状态和当前时间,Normal表示为正常展示状态,Recoding表示正在录制,可以使用空格键切换状态。如果没有按下暂停键就使用ESC推出程序,也可以正常保存视频。

import cv2
import time
class Camera:def __init__(self, addr, save_dir="./"):"""initial value"""self.save_dir = save_dirself.addr = addrself.isRecoding = Falseself.capture =cv2.VideoCapture(self.addr)self.fourcc = cv2.VideoWriter_fourcc(*'mp4v')self.size = (int(self.capture.get(cv2.CAP_PROP_FRAME_WIDTH)), \int(self.capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))def exit(self):"""exit"""self.capture.release()if self.isRecoding:self.out.release()cv2.destroyWindow("camera")print("exit")def mark(self,img):now = int(time.time())timeArray = time.localtime(now)if self.isRecoding:state = "Recoding:"else:state = "Normal:"otherStyleTime = state + time.strftime("%Y-%m-%d %H:%M:%S", timeArray)otherStyleTime = otherStyleTime.encode("gbk").decode(errors="ignore")cv2.putText(img, otherStyleTime, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (55,255,155), 2)return imgdef open(self):"""open camera"""cv2.namedWindow("camera",1)while (self.capture.isOpened()):success,img = self.capture.read()if success:cv2.namedWindow("camera",0)key = cv2.waitKey(5)if key == 32:       #按空格键开始录制和结束录制self.isRecoding = not self.isRecodingprint("isRecoding",self.isRecoding)if self.isRecoding:vedeo_name = time.strftime("%Y%m%d%H%M%S", time.localtime(int(time.time()))) + ".mp4"self.out = cv2.VideoWriter(self.save_dir+vedeo_name, self.fourcc, 25, self.size)print()else:self.out.release()img = self.mark(img)result = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)if self.isRecoding:self.out.write(result)cv2.imshow("camera",img)if key == 27:       #ESC键退出self.exit()else:print("Fail to get image")
if __name__ == '__main__':addr = "rtsp://admin:admin@zzttekiiPhone.local:8554/live"cam1 = Camera(addr)cv2.namedWindow("camera",1)cam1.open()

6、下载地址

文件已上传到Gitee上,有需要可以进行下载
https://gitee.com/ZT-Brilly/practice/tree/master/Camera

OpenCV获取手机摄像头并执行录屏操作相关推荐

  1. Python+OpenCV 调用手机摄像头并实现人脸识别

    文章内容: 1.windows 环境下安装 OpenCV 机器视觉环境搭建: 2.基于通过 Python+OpenCV调用手机摄像头并实现人脸检测识别. 目录 1 实验环境 2 实验准备 2.1 下载 ...

  2. OpenCV调用手机摄像头与人脸检测

    文章目录 一.OpenCV机器视觉环境搭建 1. OpenCV下载 2. OpenCV安装 3. 安装测试 二.OpenCV调用摄像头及人脸检测 1. 调用电脑摄像头 2. 调用手机摄像头及人脸检测 ...

  3. 手机照片导入电脑步骤_手机录屏及电脑录屏操作步骤

    想要录制讲课的直播内容或观看的电影视频保存,供反复观看学习,及重新制作,录制视频的操作的步骤如下: 想要手机录制屏: 苹果手机: 设置--控制中心--自定控制--添加屏幕录制--长按开始录屏(打开麦克 ...

  4. android 录屏工具,安卓手机上最好的录屏软件在这里

    今天的这款软件真的是推荐,谁说只有电脑可以录屏,现在手机屏幕也可以录屏啦!最好用的录屏大师软件小编是找了很久今天才和大家分享的,纯属自己个人喜欢哦!想知道是什么软件的宝宝可以和小编一起往下看啦! 录屏 ...

  5. Android隐藏录屏内容,原来手机内置的录屏功能这么强大,好多人都不会用,很可惜!...

    原标题:原来手机内置的录屏功能这么强大,好多人都不会用,很可惜! 原来手机内置的录屏功能这么强大,好多人不会用,真的很可惜 现在的手机朝着智能化的方向一直在发展,多了许多很实用的功能.就比如手机上自带 ...

  6. 使用Opencv打开手机摄像头

    使用opencv打开手机摄像头,这里指的是电脑端写的opencv软件读取手机摄像头图像. 其主要原理是在手机端打开一个端口,打开.读取手机摄像头,然后通过ip-端口号实现远程摄像头图像读取,其实就是让 ...

  7. HTML5获取手机摄像头拍照

    HTML5获取摄像头进行拍照,存储 徐涛 2017-1-3 <!DOCTYPE html> <html> <head><meta charset=" ...

  8. 【计算机视觉 · OpenCV】使用 OpenCV 调用手机摄像头

    一.前言 Droidcam 是一款可以将手机变成网络摄像头的工具,我们可以利用 Droidcam 让 OpenCV 拥有调用手机摄像头的能力. 二.步骤 2.1 安装 DroidCam 在手机和电脑上 ...

  9. opencv获取外接摄像头_opencv获取摄像头视频

    结合Leaning OpenCV 第二个例子 显示一个视屏文件 写了一下 获取摄像头的代码为并且创建窗口显示的代码为: #include "stdafx.h" #include # ...

最新文章

  1. python和idl_有前辈对比过IDL和Python的速度吗,哪个会快点?
  2. 第八届蓝桥杯省赛真题--最大公共子串
  3. Restorator 2007 Build 1729 汉化版
  4. mysql stmt语法_mysqli_stmt_fetch
  5. android悬浮按钮实现方法
  6. 【博学谷学习记录】超强总结,用心分享 | shell基础
  7. 户外耳机品牌哪个好、最新的户外耳机品牌排行
  8. 字节跳动打响「教育战」
  9. 坚果新款 N1 评测
  10. [git]上传代码到github
  11. Qt:QTextStream
  12. 2021网刃杯CTF ez-sql
  13. Charles抓手机包
  14. 王爽汇编语言 实验5
  15. itext html to pdf设置边距,iText:设置边距是否有效?
  16. TC358743xbg是一颗将HDMI信号转换成MIPI CSI2的芯片
  17. 全国计算机等级考试二级教程——c++语言程序设计答案,全国计算机等级考试二级教程--C++语言程序设计(2018年版)...
  18. 教师计算机培训心得体会2000,双师型教师计算机培训心得体会定稿(全文完整版)...
  19. 如何判断论文真正被EI收录? 国际会议都会EI检索吗?IEEE的国际会议,EI数据库核心
  20. 用自家自己的电脑做网站服务器建立个人网站

热门文章

  1. 6000字 “保姆级” 教程 | 讲述Pandas库的数据读取、数据获取、数据拼接、数据写出!
  2. 【报告分享】 美妆行业营销报告-从“她经济”到“TA经济“-WEIQ(附下载)
  3. php mysql弹幕_如何使用PHP构建一个高性能的弹幕后端服务
  4. Bitcode是什么,如何配置?
  5. 用尤克里里弹奏著名湖南民歌「 浏阳河 」
  6. Java输出hellow world
  7. 服装店用什么收银-纳客收银系统
  8. 机器学习之多元线性回归
  9. js操作word套红
  10. 图像拼接|OpenCV3.4 stitching源码分析(一)续