目录
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() 函数用于加载背景图片,函数用法如下:
cv2.putText() 函数用于在图像上绘制文本,函数用法如下:
cv2.imshow() 函数用于显示图像,函数用法如下:
在 OpenCV 中读取和显示图像的步骤如下:
- 使用 cv2.imread() 读取图像。
- 创建一个 GUI 窗口并使用 cv2.imshow() 显示图像。
- 使用函数 cv2.waitkey() 等待用户操作。
- 使用 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_TRIPLEX
org = (w//3, h//8)
fontScale = 15
fontColor = (255, 255, 255) # in BRG mode
thickness = 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 自带字体),还可以进一步添加日期、天气等信息。