【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_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 自带字体),还可以进一步添加日期、天气等信息。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋洋Young

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值