0. 目的

实现一个Python程序,用OpenCV调用摄像头显示图片,且每过nprint图片信息。

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打印摄像头图片相关推荐

  1. python调用打印机打印图片_pyqt5 调用打印机 打印远程图片

    求助.... pyqt5 实现 打印机 打印png图片 可以预览 def localPrinter(): printer = QPrinter(QPrinter.HighResolution) # / ...

  2. Python + opencv对拍照得到的图片进行背景去除的实现方法

    这篇文章主要介绍了Python + opencv对拍照得到的图片进行背景去除的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 有时候我们 ...

  3. OpenMV(三)--实时获取摄像头图片

    实时获取摄像头图片 引 前言 1. 构造函数 2. 源码分析 3. 脱机运行程序 引 OpenMV(一)–基础介绍与硬件架构 OpenMV(二)–IDE安装与固件下载 前言 利用OpenMV进行机器视 ...

  4. Python+爬虫技术获取斗鱼直播图片(整理)

    核心内容: 1.爬虫的基本原理 2.利用Python爬取数据的方法(使用urllib爬取数据) 3.从斗鱼直播平台爬取图片 最近因为工作的原因,要利用爬虫的相关技术,获取html网页相关的数据,特意总 ...

  5. Python利用Face++实现身份证件图片识别

    引言 放假在家闲来无事,看到一个接口,于是想试着用这几天学的Python玩玩,就用Python的urllib2对接了身份证图片识别接口,这里面还有很多关于图片识别类的接口(虽然有些要钱),不过里面文字 ...

  6. Python+OpenCV+pyQt5录制双目摄像头视频

    #Python+OpenCV+pyQt5录制双目摄像头视频 ##起因 说起来录制视频,我们可能有很多的软件,但是比较坑的是,好像很少的软件支持能够同时录制两个摄像头的视频,于是我们用python自己写 ...

  7. python 调用 Intel realsense D415i摄像头

    1.搭建python3开发环境(wind10 ) 安装Intel.RealSense.SDK.exe后,在安装目录-/Intel RealSense SDK 2.0/bin/x64目录下有两个.pyd ...

  8. Python用img2pdf库批量转换图片为PDF文件

    Python用img2pdf库批量转换图片为PDF文件 import os #导入os库 import time #导入时间库生成时间戳 import img2pdf #导入img2pdf库, 安装命 ...

  9. Python之实现自动开启摄像头拍照,后面发送邮寄给个人

    Python之实现自动开启摄像头拍照,后面发送邮寄给个人 文章目录 Python之实现自动开启摄像头拍照,后面发送邮寄给个人 第一步,我们要开启电脑的摄像头实现拍照: 第二步,我们要发送邮件,就必须创 ...

最新文章

  1. Java虚拟机(JVM)
  2. 兰州理工大学计算机考研真题,2017年兰州理工大学计算机与通信学院893计算机操作系统考研题库...
  3. Access界面基础操作
  4. JZOJ 5907. 【NOIP2018模拟10.16】轻功(qinggong)
  5. Python多任务(1.多任务的介绍、并发和并行概念及小例子)
  6. 怎么将pdf转换成word
  7. 终于来了!微软正式推出 VS Code 测试 API
  8. java try的用法_Java中try、catch的使用方法
  9. Keith Hill的Effective Windows PowerShell.pdf下载
  10. iPhone 6s不死!支持升级iOS 14,还能再战两年
  11. 华硕笔记本r414u怎么安装键盘_华硕笔记本键盘灯怎么开
  12. 如何在 Mac 上设置图片或视频的默认打开应用?
  13. 全网最全网络安全站点汇总!还不赶快放到收藏夹里吃灰
  14. Android集成bilibili播放器以及弹幕
  15. ST推出 28nm MCU ,NXP更狠,推出16nm MCU
  16. 洛谷 2678 跳石头
  17. eNSP配置静态路由及默认路由的三种案例
  18. 贝叶斯优化调参-Bayesian optimiazation原理加实践
  19. xunsearch与mysql区别_利用 Xunsearch 搭建搜索引擎、内容搜索实战
  20. c#拼图碎片形状_添加你的拼图碎片

热门文章

  1. 计算机页面标题栏,win10系统让iE浏览器页面标题栏显示个性签名的详细办法
  2. Apache commons-codec包的基本使用
  3. centos打显卡驱动命令_CentOS NVIDIA显卡驱动安装
  4. xbox换服务器文件名,破旧国行xbox one换盘升级重生及更换港服
  5. php 如果sql错误,php-不正确的整数值SQL错误
  6. JDK1.8判断冬令时和夏令时
  7. WebAssembly初体验
  8. 秒懂!原码、反码、补码的转化原来这么简单……
  9. 手把手wcf简单实例
  10. pywt?PyWavelets?