Python每过3s打印摄像头图片
0. 目的
实现一个Python程序,用OpenCV调用摄像头显示图片,且每过n
秒print
图片信息。
0.1 使用OpenCV调用摄像头
用OpenCV调用摄像头的程序非常简单,如下:
import cv2# 定义摄像头对象
cap = cv2.VideoCapture(0)while True:# 获取当前图片ret, frame = cap.read()# 显示图片cv2.imshow("Result", frame)# 按下q结束if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源
cap.release()
cv2.destroyAllWindows()
0.2 [错误用法] 直接使用time.sleep
函数
如何每隔n
秒打印信息,其实最简单的方法就是time.sleep
,我们可以看一下效果:
import cv2
import time
import numpy as np# 定义摄像头对象
cap = cv2.VideoCapture(0)while True:# 获取当前图片ret, frame = cap.read()# 显示图片cv2.imshow("Result", frame)# 错误用法:使用time.sleep进行时间间隔获取time.sleep(3)print(f"图片的shape为: {np.shape(frame)}")# 按下q结束if cv2.waitKey(1) & 0xFF == ord('q'):break# 释放资源
cap.release()
cv2.destroyAllWindows()
打印的信息的确是每隔3s进行的,但是你会发现摄像头的窗口卡死了。因为time.sleep
函数会冻结该线程,所以摄像头窗口也被冻结了!
所以直接使用time.sleep
不符合实际任务的需求。
1. 多线程的使用
为了解决上面的问题,我们需要使用多线程技术,即实现程序技术的同时又不影响其他程序的运行。
1.1 多线程的语法
import threading # 导入多线程的包def 线程方法(线程参数):#具体的操作---------- main ----------
# 创建线程对象
th_1 = threading.Thread(target=线程方法名, daemon=True/False, args=(目标线程的参数1, ))
# 开启线程
th_1.start()# 主线程(main)的方法
...
1.2 [解决方案] 使用多线程的计时
import time
import threading
import numpy as np
import cv2# 定义计数子线程
def timer(interval):while True: # 无限计时time.sleep(interval)print(f"{interval}s has pass, and the shape of camera image is: \n{np.shape(img_temp)}")"""---------------- 主线程(main) -------------------"""
if __name__ == '__main__':img_temp = None # 占位用的,目的是提升frame的作用域interval = 2 # 时间间隔(s)# 开启一个子线程"""Note:1. daemon=1. True: 主线程结束,子线程也结束2. False:主线程结束,子线程不结束(主线程需等待子线程结束后再结束)2. args=(interval, )中的 逗号 不能省略(因为传入的必须是一个tuple)"""# 1. 定义线程th1 = threading.Thread(target=timer, daemon=True, args=(interval,))# 2. 开启线程th1.start()# 创建摄像头对象cap = cv2.VideoCapture(0)while True:# 读取图片ret, frame = cap.read()# 显示图片cv2.imshow("Result", frame)# 赋值变量img_temp = frame # 将frame赋给img_temp# 定义关闭if cv2.waitKey(1) & 0xFF == ord('q'):break# 其他的程序# 释放资源cap.release()cv2.destroyAllWindows()
这样就计时就不会影响摄像头窗口图像的获取了!
Python每过3s打印摄像头图片相关推荐
- python调用打印机打印图片_pyqt5 调用打印机 打印远程图片
求助.... pyqt5 实现 打印机 打印png图片 可以预览 def localPrinter(): printer = QPrinter(QPrinter.HighResolution) # / ...
- Python + opencv对拍照得到的图片进行背景去除的实现方法
这篇文章主要介绍了Python + opencv对拍照得到的图片进行背景去除的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 有时候我们 ...
- OpenMV(三)--实时获取摄像头图片
实时获取摄像头图片 引 前言 1. 构造函数 2. 源码分析 3. 脱机运行程序 引 OpenMV(一)–基础介绍与硬件架构 OpenMV(二)–IDE安装与固件下载 前言 利用OpenMV进行机器视 ...
- Python+爬虫技术获取斗鱼直播图片(整理)
核心内容: 1.爬虫的基本原理 2.利用Python爬取数据的方法(使用urllib爬取数据) 3.从斗鱼直播平台爬取图片 最近因为工作的原因,要利用爬虫的相关技术,获取html网页相关的数据,特意总 ...
- Python利用Face++实现身份证件图片识别
引言 放假在家闲来无事,看到一个接口,于是想试着用这几天学的Python玩玩,就用Python的urllib2对接了身份证图片识别接口,这里面还有很多关于图片识别类的接口(虽然有些要钱),不过里面文字 ...
- Python+OpenCV+pyQt5录制双目摄像头视频
#Python+OpenCV+pyQt5录制双目摄像头视频 ##起因 说起来录制视频,我们可能有很多的软件,但是比较坑的是,好像很少的软件支持能够同时录制两个摄像头的视频,于是我们用python自己写 ...
- python 调用 Intel realsense D415i摄像头
1.搭建python3开发环境(wind10 ) 安装Intel.RealSense.SDK.exe后,在安装目录-/Intel RealSense SDK 2.0/bin/x64目录下有两个.pyd ...
- Python用img2pdf库批量转换图片为PDF文件
Python用img2pdf库批量转换图片为PDF文件 import os #导入os库 import time #导入时间库生成时间戳 import img2pdf #导入img2pdf库, 安装命 ...
- Python之实现自动开启摄像头拍照,后面发送邮寄给个人
Python之实现自动开启摄像头拍照,后面发送邮寄给个人 文章目录 Python之实现自动开启摄像头拍照,后面发送邮寄给个人 第一步,我们要开启电脑的摄像头实现拍照: 第二步,我们要发送邮件,就必须创 ...
最新文章
- Linux tomcat日志分割按天分割
- DateTime格式大全
- 数字图像处理经典论文汇总
- 扭矩大好还是马力大好_发动机的马力重要还是扭矩重要?加速到底看哪个?
- 【Python-pywt】 小波变化库—Pywavelets 学习笔记
- 剪切粘贴时总是上次的内容_关于复制粘贴,还有一个鲜为人知的技巧!
- 软考网络工程师考试答疑
- 金蝶K3即时库存成本计算逻辑是什么?
- 【Unity】【C#】《U3d人工智能编程精粹》学习心得--------操纵行为--路径跟随
- 农夫山泉CIO分享SAP HANA数据库实施经验
- 关于textarea打印问题
- matlab画sinc函数及其有意思的性质
- AUTO_ACKNOWLEDGE和CLIENT_ACKNOWLEDGE
- 计算机上如何转换搜狗,无法切换到搜狗输入法怎么办
- Amazon 邮箱大全
- CVer最想知道的,简单分析下《2020年度中国计算机视觉人才调研报告》
- cad添加自己线性_如何在CAD图纸中进行线性标注
- 图解项目绩效评价的13个常用方法大全
- 使用OpenCV滑动条写成的简单调色器,实时输出RGB值
- ----web前端 实验二