【OpenCV】绘制桌面锁屏时钟

OpenCV 是一个开源的计算机视觉(Computer Vision)与机器学习软件库,提供了多种图像处理算法与接口,用于解决计算机视觉相关问题。OpenCV 支持多平台与多语言,本文主要记录如何使用 OpenCV-Python 绘制桌面锁屏时钟。

目录

1 准备工作

2 程序设计

3 改进


1 准备工作

       首先安装 Numpy 库和 OpenCV-Python 库,可以使用 pip 直接下载和安装,输入以下命令:

pip install numpy
pip install opencv-python

安装完成之后,使用以下代码查看 Numpy 和 OpenCV 版本:

import numpy as np
print(np.__version__)
import cv2
print(cv2.__version__)

cv2 是 OpenCV 的最新版本,控制台打印版本号就说明库安装好了。

        接下来准备一张图片,分辨率建议 2K 以上,用于后续全屏显示的背景。需要注意 OpenCV 库支持以下类型的图片格式:

  • Windows bitmaps – *.bmp, *.dib
  • JPEG files – *.jpeg, *.jpg
  • Portable Network Graphics – *.png 
  • WebP – *.webp 
  • Sun rasters – *.sr, *.ras 
  • TIFF files – *.tiff, *.tif 

2 程序设计

       在桌面锁屏时钟程序中,主要使用了OpenCV库的以下几个函数:

  • cv2.imread()
  • cv2.putText()
  • cv2.imshow()

cv2.imread() 函数用于加载背景图片,函数用法如下:

Syntax: cv2.imread(path, flag)

flag: cv2.IMREAD_COLOR, cv2.IMREAD_GRAYSCALE, ect.

cv2.putText() 函数用于在图像上绘制文本,函数用法如下:

Syntax: cv2.putText(image, text, org, font, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])

cv2.imshow() 函数用于显示图像,函数用法如下:

Syntax: cv2.imshow(window_name, image)

在 OpenCV 中读取和显示图像的步骤如下:

  1. 使用 cv2.imread() 读取图像。
  2. 创建一个 GUI 窗口并使用 cv2.imshow() 显示图像。
  3. 使用函数 cv2.waitkey() 等待用户操作。
  4. 使用 cv2.destroyAllWindows() 从内存中删除图像窗口。

桌面锁屏时钟应用程序代码如下:

#-*- Coding: utf-8 -*-import cv2
import numpy as np
from datetime import datetime"""putText()用法:cv2.putText(image, text, org, font, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])"""def main():# 加载背景图像path = r'./src/Appearance.png'img_bg = cv2.imread(path, cv2.IMREAD_COLOR)# 获取宽、高信息h, w, _ = img_bg.shape# 定义字体属性font = cv2.FONT_HERSHEY_TRIPLEXorg = (w//3, h//8)fontScale = 15fontColor = (255, 255, 255) # in BRG modethickness = 12# 创建窗口,并设置全屏属性cv2.namedWindow('win', cv2.WINDOW_NORMAL)cv2.setWindowProperty('win', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)while True:# 获取当前时间current_time = datetime.now().strftime('%H:%M:%S')# 使用np.copy()进行深拷贝,并添加时间img = cv2.putText(np.copy(img_bg), current_time, org, font, fontScale, fontColor, thickness)# 显示图像cv2.imshow('win', img)if cv2.waitKey(10) & 0xFF == 27:# 等待10ms, 监测Esc按下事件break# 关闭窗口cv2.imwrite('./src/screen_clock.png', img)cv2.destroyAllWindows()if __name__ == "__main__":main()

以下是显示效果:

3 改进

        本文主要使用 OpenCV 库的 putText() 函数,在背景图上添加时间,实现桌面锁屏时钟功能。后续有时间的话,可以考虑使用自定义字体(非 OpenCV 自带字体),还可以进一步添加日期、天气等信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/503553.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一起玩儿平衡车(ESP32)——02 平衡车的组装与接线方法

摘要:本文介绍平衡车的组装与接线方法 前边介绍了所要实现的平衡车的组成,接下来就来把小车组装起来。首先是下层底板的底面要固定两个轮子。这个只要固定孔位没有问题,用螺丝直接将轮子支架固定上去就可以了。固定好后如下图所示&#xff1…

【MySQL】:高效利用MySQL函数实用指南

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. MySQL函数概论二. 字符串函数三. 数值函数四. 日期函数五. 流程函数&#x1…

达梦数据库基础操作(三):表相关操作

达梦数据库基础操作(三):表相关操作 1. 表相关操作 1.1 创建表 # 使用 CREATE TABLE 语句创建 employee 表。 CREATE TABLE employee (employee_id INTEGER,employee_name VARCHAR2(20) NOT NULL,hire_date DATE,salary INTEGER,department_id INTEGER NOT NULL )…

会声会影使用教程:5分钟学会会声会影

工具材料: 工具材料: 会声会影软件 会声会影2023下载地址 https://souurl.cn/gbXy1d 会声会影2022下载地址 https://souurl.cn/2KpINh 会声会影2021下载地址 https://souurl.cn/jd1HOr 会声会影2020下载地址 https://souurl.cn/3EJxdZ 使用方法&am…

搭建stressapptest调试环境:VSCode的分步教程

vscode调试stressapptest详解 一、环境准备二、设置调试配置2.1、编辑launch.json文件和task.json文件2.2、将 stressapptest 编译成 debug 版本 三、运行调试总结 一、环境准备 stressapptest(简称SAT)是一种用于在Linux系统上测试系统稳定性和可靠性的…

CryoEM - 使用 cryoSPARC 基于单颗粒图像从头重构蛋白质三维结构

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136384544 基于冷冻电镜单颗粒图像重构蛋白质三维结构,利用冷冻电镜技术测定生物大分子结构的方法。原理是从冷冻电镜获得大量同一种蛋白质分子的二维投影图…

03按键控制LED

上回讲到点亮一个LED     这次我们来实现用按键控制led 不带中断的方式 当然实例来源网络 加上自己整合 先熟悉流程 0.添加一个自己写的驱动库文件 为什么添加 笔者想的是一个项目工程希望能适应很多个应用场景需要什么直接在里面调用分装好的函数就行 1.如何添加文件以及…

「媒体宣传」如何写好新闻稿?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 写好新闻稿是媒体宣传的关键环节之一,下面是一些关于如何写好新闻稿的建议: 明确新闻稿的目的和受众:在写新闻稿之前,首先要明确新闻稿的目…

wpa_supplicant交叉编译

文章目录 源码编译openssl编译libnl交叉编译WPA 开发板测试使用 源码 wpa_supplicant官网:http://w1.fi/wpa_supplicant/ GIT源:git://w1.fi/hostap.git openssl 源码: https://www.openssl.org/ libnl 源码: https://github.c…

Socket网络编程(四)——点对点传输场景方案

目录 场景如何去获取到TCP的IP和Port?UDP的搜索IP地址、端口号方案UDP搜索取消实现相关的流程:代码实现逻辑服务端实现客户端实现UDP搜索代码执行结果 TCP点对点传输实现代码实现步骤点对点传输测试结果 源码下载 场景 在一个局域网当中,不知…

26、Qt调用.py文件中的函数

一、开发环境 Qt5.12.0 Python3.7.8 64bit 二、使用 新建一个Qt项目,右击项目名称,选择“添加库” 选择“外部库”,点击“下一步” 点击“浏览”,选择Python安装目录下的libs文件夹中的“python37.lib”文件,点击“下…

gpt批量工具,gpt批量生成文章工具

GPT批量工具在今天的数字化时代扮演着越来越重要的角色,它们通过人工智能技术,可以自动批量生成各种类型的文章,为用户提供了便利和效率。本文将介绍5款不同的GPT批量工具,并介绍一款知名的147GPT生成工具,以及另外一款…