python+opencv实现显示摄像头,截取相关图片,录取相关视频

news/2025/1/11 23:41:59/

实时显示摄像头图像
按下空格键,截取图片
按下tab键,开始录制摄像内容,再次按下,结束录制 

按下Esc键,关闭窗口

import cv2
import numpy#第几章图片
img_count=0InitVideo=False
#第几个视频
video_count=0
video_flag=False#参数为0,表示打开笔记本的内置摄像头
cameraCapture = cv2.VideoCapture(0)w = cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)
# 获取视频帧的高
h = cameraCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)
# 获取视频帧的帧率
fps = cameraCapture.get(cv2.CAP_PROP_FPS)
# 获取视频流的总帧数
fcount = cameraCapture.get(cv2.CAP_PROP_FRAME_COUNT)# 给窗口命名
cv2.namedWindow('MyWindow')# 按帧读取数据
success, frame = cameraCapture.read()while success :#镜像显示摄像头图像mirroredFrame=numpy.fliplr(frame).copy()cv2.imshow('MyWindow', mirroredFrame)keycode=cv2.waitKey(1)if keycode == 32:cv2.imwrite('img'+str(img_count)+'.jpg', frame)img_count=img_count+1elif keycode == 27:breakelif keycode == 9:video_flag =not video_flag #这个参数控制是否开始录屏InitVideo = True    #这个参数来影响初始化视频的次数#关于录屏if video_flag == True:if InitVideo == True:# 初始化writer = cv2.VideoWriter('out' + str(video_count) + '.avi', cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),int(fps), (int(w), int(h)))video_count = video_count + 1InitVideo =Falsewriter.write(frame)success, frame = cameraCapture.read()
cv2.destroyWindow('MyWindow')
cameraCapture.release()
writer.release()
cv2.destroyAllWindows()

截图: 

可以添加函数来使图像的显示效果改变(边缘检测效果):

def strokeEdges(src,dst,blurKsize = 7,edgeKsize = 5):# 模糊函数,对去除数字化的视频噪声很有效,尤其是彩色图像的噪声blurredSrc = cv2.medianBlur(src, blurKsize)# 彩色图转灰度图graySrc = cv2.cvtColor(blurredSrc, cv2.COLOR_BGR2GRAY)# 边缘检测函数,会产生明显的边缘线条cv2.Laplacian(graySrc, cv2.CV_8U, graySrc, edgeKsize)# 黑转白,白转黑normalizedInverseAlpha = (1.0 / 255) * (255 - graySrc)# 重新恢复彩色,实现更清晰的轮廓图channels = cv2.split(src)for channel in channels:channel[:] = channel * normalizedInverseAlphacv2.merge(channels, dst)

自行在对应的帧显示处调用:

 


http://www.ppmy.cn/news/1003834.html

相关文章

‘<>‘ cannot be used with anonymous classes

‘&#xff1c;&#xff1e;‘ cannot be used with anonymous classes <>不能与匿名类一起使用 Description Resource Path Location Type <> cannot be used with anonymous classes SearchHitSupport.java /spring-data-elasticsearch/src/main/java/org/spri…

Flink State 和 Fault Tolerance详解

有状态操作或者操作算子在处理DataStream的元素或者事件的时候需要存储计算的中间状态&#xff0c;这就使得状态在整个Flink的精细化计算中有着非常重要的地位&#xff1a; 记录数据从某一个过去时间点到当前时间的状态信息。以每分钟/小时/天汇总事件时&#xff0c;状态将保留…

idea数据库快速上手-库操作与表结构和数据操作

引言 对数据库的操作无非就是执行SQL语句&#xff0c;要想熟练操作数据库&#xff0c;就要熟练运用SQL语句。 一&#xff0c;数据库操作 展示当前服务器内的数据库 -- 展示服务器内的数据库 show databases; show schemas; 执行结果&#xff1a; 创建数据库&#xff1a; --…

#P0761. [NOIP2012普及组] 文化之旅

题目描述 有一位使者要游历各国&#xff0c;他每到一个国家&#xff0c;都能学到一种文化&#xff0c;但他不愿意学习任何一种文化超过一次&#xff08;即如果他学习了某种文化&#xff0c;则他就不能到达其他有这种文化的国家&#xff09;。不同的国家可能有相同的文化。不同…

寻找旋转排序数组中的最小值——力扣153

文章目录 题目描述解法 二分法 题目描述 解法 二分法 int findMin(vector<int>& nums){int l0, rnums.size()-1;while(l<r){int mid (lr)/2;if(nums[mid]<nums[r]) rmid;else lmid1;}return nums[l];}

机器学习笔记 - YOLO-NAS 最高效的目标检测算法之一

一、YOLO-NAS概述 YOLO(You Only Look Once)是一种对象检测算法,它使用深度神经网络模型,特别是卷积神经网络,来实时检测和分类对象。该算法首次在 2016 年由 Joseph Redmon、Santosh Divvala、Ross Girshick 和 Ali Farhadi 发表的论文《You Only Look Once: Unified, Re…

python:np.tile函数

python&#xff1a;np.tile函数 np.tile(P0, (n, 1, 1))tile的(arr,(a,b,c,d))的abcd&#xff1a;在batch、c、h、w四个维度分别拷贝。 第三、第四个参数c&#xff0c;d&#xff1a;将原数据arr拷贝&#xff08;从行的维度拷贝c份&#xff0c;从列的维度拷贝d份&#xff09;&…

机器学习06 数据准备-(利用 scikit-learn基于Pima Indian数据集作 数据特征选定)

什么是数据特征选定? 数据特征选定&#xff08;Feature Selection&#xff09;是指从原始数据中选择最相关、最有用的特征&#xff0c;用于构建机器学习模型。特征选定是机器学习流程中非常重要的一步&#xff0c;它直接影响模型的性能和泛化能力。通过选择最重要的特征&#…