iis服务器助手广告
返回顶部
首页 > 资讯 > 操作系统 >摄像头的调用和视频识别
  • 430
分享到

摄像头的调用和视频识别

opencv计算机视觉视频 2023-08-30 10:08:50 430人浏览 泡泡鱼
摘要

CV_tutorial3 摄像头调用+实时播放+保存视频 运动目标识别帧差法背景减除法 摄像头调用 创建视频捕捉对象:cv2.VideoCapture() 参数为视频设备的索引号,就一个摄像投的话写0默认; 或者是指定要

摄像头调用

创建视频捕捉对象:cv2.VideoCapture()
参数为视频设备的索引号,就一个摄像投的话写0默认;
或者是指定要读取视频的路径。

+实时播放

import cv2import numpy as npcap = cv2.VideoCapture(0) # 创建循环结构连续按帧读取视频while (True):# ret返回布尔值,frame三维矩阵(每一帧的图像)ret, frame = cap.read()# 并展示cv2.imread('frame', frame)# 按下‘q’键退出循环if cv2.waiTKEy(1) && 0xFF ==ord('q'):breakcap.release() # 释放资源cv2.destroyAllwindows()

+保存视频

cv2.VideoWriter()

import cv2cap = cv2.VideoCapture(0)#创建编码方式# mp4:'X','V','I','D'# avi:'M','J','P','G'或'P','I','M','1' # flv:'F','L','V','1'fourcc = cv2.VideoWriter_fourcc('X','V','I','D')# 创建VideoWriter对象out = cv2.VideoWriter('ouput_1.mp4', fourcc, 20.0, (640, 480)) # 播放帧率,大小# 创建循环结构进行连续读写while(cap.isOpened()):ret, frame = cap.read()if ret == True:out.write(frame)cv2.imshow('frame', frame)if cv2.waitKey(1) && 0xFF == ord('q'):breakelse:breakcap.release()out.release()cv2.destryAllWindows()

运动目标识别

帧差法

通过对视频中相邻两帧图像做差分运算来标记运动物体,
移动的物体在相邻帧中灰度会有差别,因此差值为0的是静态物体。

import cv2camera = cv2.VideoCapture("move_detect.flv")out_fps = 12.0 # 输出文件的帧率fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', '2') # 创建编码方式# 创建VideoWriter对象out1 = cv2.VideoWriter('v1.avi', fourcc, out_fps, (500, 400))out2 = cv2.VideoWriter('v2.avi', fourcc, out_fps, (500, 400))# 初始化lastFrame = None# 创建循环结构进行连续读写while camera.isOpened():ret, frame = camera.read()# 如果不能抓取到一帧,说明到了视频的结尾if not ret:break# 调整该帧大小frame = cv2.resize(frame, (500, 400), interpolation = cv2.INTER_CUBIC)# 如果第一帧是None,对其初始化if lastFrame == None:lastFrame = framecontinue# 求帧差frameDelta = cv2.absdiff(lastFrame, frame)lastFrame = frame    '''阈值化,留下轮廓'''thresh = cv2.cvtColor(frameDelta, cv2.COLOR_BGR2GRAY) # 灰度图thresh = cv2.threshold(thresh, 25, 255, cv2.THRESH_BINARY)[1] # 二值化# 阈值图像上的轮廓位置cnts, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 遍历轮廓for c in cnts:# 忽略小轮廓,可能运动的小鸟之类的,排除误差if cv2.contourArea(c) < 300:continue# 画轮廓边界框(x, y, w, h) = cv2.boundingRect(c)cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)# 展示当前帧cv2.imshow("frame", frame)cv2.imshow("frameDelta", frameDelta)cv2.imshow("thresh", thresh)# 保存视频out1.write(frame)out2.write(frameDelta)if cv2.waitKey(20) && 0xFF == ord('q'):break# 资源释放out1.release() out2.release() camera.release() cv2.destroyAllWindows()

在这里插入图片描述
飘动的彩带也被捕捉到了,但是去误差,没有标小轮廓;
行人前后帧(运动)幅度小的也没被发现(框定)。

背景减除法

对视频的背景进行建模,实现背景消除,生成mask图像,通过对mask二值图像分析实现对前景活动对象的区域的提取。

  1. 初始化背景建模对象GMM
  2. 读取视频一帧
  3. 使用背景建模消除生成mask
  4. 对mask进行轮廓分析图区ROI(region of interest)
  5. 绘制ROI对象
import numpy as npimport cv2# read the videocamera = cv2.VideoCapture('move_detect.flv')# 创建背景减除对象fgbg = cv2.createBackgroundSubstractORMOG2(history = 500, varThreshold = 100, detectShadows = False)def getPerson(image, opt=1):# 获取前景maskmask = fgbg.apply(frame)'''去噪'''# 创建一个矩形形状的结构元素,用于形态学操作,如腐蚀(erosion)和膨胀(dilation)line = cv2.getStructuringElement(cv2.MORPH_RECT, (1, 5), (-1, -1))mask = cv2.morphologyEx(mask, cv2.MORPG_OPEN, line)cv2.imshow('mask', mask) # 画出轮廓并忽略小于阈值的轮廓contours, hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)for c in contours:area = cv2.contourArea(c)if area < 150:continuerect = cv2.minAreaRect(c) # 返回一个具有最小面积的矩形cv2.ellipse(image, rect, (0, 0, 255), 2, 8)cv2.circle(image, (np.int32(rect[0][0]), np.int32(rect[0][1])), 2, (0, 0, 255), 2, 8, 0) # 取矩形中心点作为圆心return image, maskwhile True:ret, frame = camera.read()res, m_ = getPerson(frame) # python中使用下划线作为占位符变量名是一种惯例。它也可以用来忽略函数的返回值或迭代中的某些值,以避免产生未使用变量的警告cv2.imshow('res', res)if cv2.waitKey(20) && 0xFF == ord('q'):break# 资源释放camera.release() cv2.destroyAllWindows()

图像论1帧,连续帧就成了视频

来源地址:https://blog.csdn.net/bocaiaichila/article/details/132536721

--结束END--

本文标题: 摄像头的调用和视频识别

本文链接: https://www.lsjlt.com/news/382669.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 摄像头的调用和视频识别
    CV_tutorial3 摄像头调用+实时播放+保存视频 运动目标识别帧差法背景减除法 摄像头调用 创建视频捕捉对象:cv2.VideoCapture() 参数为视频设备的索引号,就一个摄像投的话写0默认; 或者是指定要...
    99+
    2023-08-30
    opencv 计算机视觉 视频
  • C/C++中的OpenCV读取视频与调用摄像头
    目录OpenCV读取视频与调用摄像头读取视频播放视频调用摄像头这是读取文件然后进行播放下面是打开摄像头的代码Opencv读取视频以及打开摄像头以及视频读取失败原因1、打开摄像头2、视...
    99+
    2022-11-13
    C++ OpenCV OpenCV读取视频 调用摄像头
  • javacv开发详解之调用本机摄像头视频
    目录前言依赖配置说明1.使用maven添加依赖2.使用gradle添加依赖3.使用本地jar包方式为什么不需要安装opencv?获取摄像头视频前言 javacv开发包是用于支持jav...
    99+
    2024-04-02
  • flask解析海康摄像头视频的使用
    目录一、安装依赖包二、获取海康摄像头视频流三、将视频流输出到Web页面四、 创建HTML模板文件作为AI智能的一种应用场景,视频监控系统已经在各个行业得到广泛应用。而海康威视和大华技...
    99+
    2023-03-06
    flask 海康摄像头视频 flask 海康摄像头
  • flask海康摄像头视频如何使用
    本篇内容介绍了“flask海康摄像头视频如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装依赖包使用Flask框架解析海康摄像头...
    99+
    2023-07-05
  • OpenCV调用摄像头
    环境 python:python3.6摄像头:网络摄像头Python库:openCV # -*- coding: utf-8 -*- # @author leone # @desc 使用 python 的 openCV 获取网络摄像...
    99+
    2023-01-31
    摄像头 OpenCV
  • python调用摄像头
    import cv2 #模块称作cv2。python需要用到opencv-python模块。可在命令行模式输入: #pip install opencv-python -i https://pypi.douban.com/simple/ c...
    99+
    2023-10-01
    python opencv 开发语言
  • C#+EmguCV使用摄像头读取、保存视频
    本文实例为大家分享了C#+EmguCV使用摄像头读取、保存视频的具体代码,供大家参考,具体内容如下 在Emgucv中调用摄像头需要用到VideoCapture类 这个类有四种重载的方...
    99+
    2024-04-02
  • Android相机调用-CameraX【外接摄像头】【USB摄像头】
    Android相机调用有原生的Camera和Camera2,我觉得调用代码都太复杂了,CameraX调用代码简洁很多。 说明文档:https://developer.android.com/jetpack/androidx/releases...
    99+
    2023-10-22
    数码相机 android
  • gradio摄像头获取照片和视频怎么实现
    这篇文章主要讲解了“gradio摄像头获取照片和视频怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“gradio摄像头获取照片和视频怎么实现”吧!1.环境设置1.1gradio安装需要...
    99+
    2023-07-05
  • 如何使用Python控制摄像头录制视频
    导语: ​Python如何下载网页上的图片呢? 今天小编给大家分享另一个Python应用小程序,就是:用Python控制摄像头录制视频! 学会了也可以做一个属于自己的摄像头控制程序...
    99+
    2024-04-02
  • 怎么使用Python控制摄像头录制视频
    本文小编为大家详细介绍“怎么使用Python控制摄像头录制视频”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Python控制摄像头录制视频”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果:用Pytho...
    99+
    2023-06-29
  • K210摄像头矩形图坐标识别
    我接触的第一个硬件项目是设计一个简陋的智能视觉小车,我在项目里的任务是识别一张纸上六个目标点坐标然后发送给小车。 图一  场地样式 就是将上图六个点的坐标识别然后传输给小车。 识别效果大概是这样:  图二 识别效果 因为是第一次做这样...
    99+
    2023-08-31
    ide python
  • Vue中如何实现摄像头直播视频
    这篇文章给大家分享的是有关Vue中如何实现摄像头直播视频的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML代码:<div class="mainCl...
    99+
    2024-04-02
  • Html5中如何调用手机摄像头并实现人脸识别
    这篇文章主要介绍了Html5中如何调用手机摄像头并实现人脸识别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。需求混合App开发,原生壳子+webApp,在web部分调用原生摄...
    99+
    2023-06-09
  • ubuntu调用外接摄像头
    一、ubuntu20.04调用外接摄像头(如果是Ubuntu18.04用melodic放在第二行) 1.检查是否连接摄像头 ls /dev/video* 输出/dev/video0  /dev/video1  /dev/video2  /d...
    99+
    2023-08-31
    ubuntu linux python
  • yolov5调用usb摄像头及本地摄像头的方法实例
    目录yolov5调用usb摄像头YOLOv5调用本地摄像头总结yolov5 调用 usb 摄像头 文章是在yolov5 v5.0版本的detect.py所修改编写 其他v1.0-v4...
    99+
    2024-04-02
  • 通过gradio和摄像头获取照片和视频实现过程
    目录1.环境设置1.1gradio安装2.ffmpeg安装2.简单小程序2.1 引入gradio2.2 定义方法2.3 定义接口2.4 运行3.执行情况3.1 终端日志输出3.2 截...
    99+
    2023-05-14
    gradio 摄像头获取照片视频 gradio 摄像头
  • VS2022如何调试通过海康摄像头烟火识别SDK
    这篇文章主要介绍VS2022如何调试通过海康摄像头烟火识别SDK,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!下面是我根据海康官方文档代码,放到VS 2022 版本中调试通过后的代码:#include &l...
    99+
    2023-06-29
  • 如何使用VUE+faceApi.js实现摄像头拍摄人脸识别
    目录需求:实现步骤:第一步:下载引入必要包下载依赖下载model将项目中的model放入VUE中的public文件加下第二步:先把HTML写上去 第三步 可以开始...
    99+
    2023-05-18
    face api.js 人脸识别 vue实现人脸识别 人脸识别 js
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作