当前位置: 首页 > news >正文

opencv 按键开启连续截图,并加载提示图片

背景图+小图
在这里插入图片描述
在这里插入图片描述
键盘监听使用的是pynput 库
保存图片时使用了年月日时分秒命名
原图:
请添加图片描述
请添加图片描述

from pynput import keyboard
import cv2
import time# 键盘监听
def on_press(key):global jieglobal guanif key.char == 'a':jie = Trueelif key.char == 'd':jie = Falseelif key.char == 'q':guan = Truelistener = keyboard.Listener(on_press=on_press)
listener.start()img1_1 = cv2.imread("./img1_1.jpg")  # 正在截图(准备2张图片)
img1_2 = cv2.imread("./img1_2.jpg")  # 没有截图(准备两张图片)# 保存截图程序
# # 截图 y1 y2 x1 x2
# # # 531 450 644 479
# x1, y1, x2, y2 = 541, 450, 644, 479
# img1_1 = img1_1[y1:y2, x1:x2]
#
# cv2.namedWindow('f2100', cv2.WINDOW_NORMAL)
# cv2.imshow('f2100', img1_1)
# cv2.waitKey(0)
# path_img = "./ce/"
# img_name = "img1_2" + ".jpg"
#
# cv2.imwrite(img_name, img1_1)img1_h, img1_w, img1_3 = img1_1.shape
img2_h, img2_w, img2_3 = img1_2.shapecap = cv2.VideoCapture("./data_ce_mp4/9.mp4")# 命名区分
n1 = 0
# 跳帧计数
zhen = 0# 截图状态开关
jie = False
# 程序关闭按钮
guan = False# 绘制文字
font = cv2.FONT_HERSHEY_SIMPLEXwhile cap.isOpened():# 逐帧读取ret, image = cap.read()n1 += 1    # 取名字zhen += 1  # 多少帧截取一次# 视频结束则关闭程序if not ret:break# 按下则关闭程序if guan:break# 跳帧计数if zhen >= 20:# 截图状态开关if jie:# tm_year=2024, tm_mon=7, tm_mday=22, tm_hour=11, tm_min=1, tm_sec=53, tm_wday=0# 按照年月日时分秒来命名localtime = time.localtime(time.time())# print(localtime)tm_year = str(localtime.tm_year)tm_mon = str(localtime.tm_mon)tm_mday = str(localtime.tm_mday)tm_hour = str(localtime.tm_hour)tm_min = str(localtime.tm_min)tm_sec = str(localtime.tm_sec)# 保证年月日时分秒是定长的# 月if len(tm_mon) != 2:tm_mon = "0" + tm_mon# 日if len(tm_mday) != 2:tm_mday = "0" + tm_mday# 时if len(tm_hour) != 2:tm_hour = "0" + tm_hour# 分sif len(tm_hour) != 2:tm_min = "0" + tm_min# 秒if len(tm_sec) != 2:tm_sec = "0" + tm_sec# print(tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec)path_img = "./ce/"img_name = tm_year + tm_mon + tm_mday + tm_hour + tm_min + tm_sec + "_" + str(n1) + ".jpg"cv2.imwrite(path_img + img_name, image)print("正在截图")print(img_name)zhen = 0# 将小图片按位置百分比放入大图片中h, w, _1 = image.shape# 截图 y1 y2 x1 x2x1_1, y1_1, x2_1, y2_1 = 0 + int(0.1 * w), 0 + int(0.2 * h), img1_w + int(0.1 * w), img1_h + int(0.2 * h)x1_2, y1_2, x2_2, y2_2 = 0 + int(0.1 * w), 0 + int(0.2 * h), img2_w + int(0.1 * w), img2_h + int(0.2 * h)# 按照状态不同,叠加的图片不同if jie:string_jie = "yes"image[y1_1:y2_1, x1_1:x2_1] = img1_1else:string_jie = "No!"print("没有截图")image[y1_2:y2_2, x1_2:x2_2] = img1_2# 绘制字母# 参数:图像、文字、坐标、支持的字体、大小、颜色、粗细# cv2.putText(image, string_jie, (int(0.1 * w), int(0.17 * h)), font, 2, (0, 0, 255), 3)# print(x1_1, y1_1, x2_1, y2_1)# 显示的图像是否可以鼠标拖动缩放# cv2.namedWindow('f2100', cv2.WINDOW_NORMAL)cv2.imshow('f2100', image)cv2.waitKey(1)

相关文章:

  • 论文写作之latex配置(VSCODE+TEXT LIVE)
  • THS配置keepalive(yjm)
  • JAVA用TreeMap实现JSON按字母升序排序
  • MySQL中的DQL
  • 配置sublime的中的C++编译器(.sublime-build),实现C++20
  • C#初级——结构体
  • Linux中的三类读写函数
  • Cannot perform upm operation: connect ETIMEDOUT 34.36.199.114:443 [NotFound]
  • Android 13 大屏显示时关于SystemUI和Launcher3问题
  • 记录unraid docker更新的域名
  • 万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”
  • Elasticsearch:Golang ECS 日志记录 - zap
  • Sokit(TCP/UDP调试工具)
  • 均匀圆形阵列原理及MATLAB仿真
  • Spring Boot集成Redis与Lua脚本:构建高效的分布式多规则限流系统
  • 30天自制操作系统-2
  • Akka系列(七):Actor持久化之Akka persistence
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • bootstrap创建登录注册页面
  • go语言学习初探(一)
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JAVA 学习IO流
  • laravel5.5 视图共享数据
  • linux安装openssl、swoole等扩展的具体步骤
  • SpringCloud集成分布式事务LCN (一)
  • vue-cli在webpack的配置文件探究
  • vue数据传递--我有特殊的实现技巧
  • Zsh 开发指南(第十四篇 文件读写)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 前嗅ForeSpider中数据浏览界面介绍
  • 手机app有了短信验证码还有没必要有图片验证码?
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • Spring Batch JSON 支持
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​TypeScript都不会用,也敢说会前端?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ‌JavaScript 数据类型转换
  • # Apache SeaTunnel 究竟是什么?
  • #数据结构 笔记一
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $.proxy和$.extend
  • (1)SpringCloud 整合Python
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (每日一问)计算机网络:浏览器输入一个地址到跳出网页这个过程中发生了哪些事情?(废话少说版)
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十八)Flink CEP 详解
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (一一四)第九章编程练习
  • ./configure,make,make install的作用
  • .net Application的目录
  • .NET BackgroundWorker
  • .Net Core与存储过程(一)
  • .net SqlSugarHelper
  • .NET 设计一套高性能的弱事件机制