正能量不良网站直接进入,百度查询,wordpress建立,微网站建设公司OpenCV 是一个开源的计算机视觉#xff08;Computer Vision#xff09;与机器学习软件库#xff0c;提供了多种图像处理算法与接口。在图像处理中#xff0c;按位运算是一类重要的运算#xff0c;可以用于提取图像的重要部分。本文主要记录如何使用 OpenCV-Python 绘制仿 … OpenCV 是一个开源的计算机视觉Computer Vision与机器学习软件库提供了多种图像处理算法与接口。在图像处理中按位运算是一类重要的运算可以用于提取图像的重要部分。本文主要记录如何使用 OpenCV-Python 绘制仿 IOS 的锁屏时钟。 目录
1 函数介绍
2 程序设计 1 函数介绍 在图像处理中按位运算是一类重要的运算。OpenCV 提供了以下 4 种按位运算包括
cv2.bitwise_and()cv2.bitwise_or()cv2.bitwise_xor()cv2.bitwise_not()
另外按位运算可以配合图像掩膜使用用于提取图像中的重要部分。 cv2.bitwise_and() 函数用法 Syntax: cv2.bitwise_and(source1, source2, destination, mask) cv2.bitwise_or() 函数用法 Syntax: cv2.bitwise_or(source1, source2, destination, mask) cv2.bitwise_xor() 函数用法 Syntax: cv2.bitwise_xor(source1, source2, destination, mask) cv2.bitwise_not() 函数用法 Syntax: cv2.bitwise_not(source, destination, mask) source输入图像支持单通道、8bit 或浮点数格式destination输出图像大小与格式需与 source 保持一致mask运算掩码格式为8bit 单通道。 2 程序设计
以下是 Python 代码
#-*- Coding: utf-8 -*-
import cv2
import numpy as np
from datetime import datetimenum_mask {n: cv2.imread(f./src/{n}.PNG, cv2.IMREAD_GRAYSCALE) for n in range(10)}def draw_number(image, slice, iy, ix):# 根据ix,iy坐标放置数字slice_ext np.zeros(image.shape, dtypenp.uint8)slice_ext[iy: iyslice.shape[0], ix: ixslice.shape[1]] slice# 使用cv2.bitwise_or()函数叠加dst_img cv2.bitwise_or(image, slice_ext)return dst_imgdef draw_clock(image, current):# 创建纯色图像height, width, channel 1179, 960, 3color_light np.zeros((height, width, channel), dtypenp.uint8)color_light[:] (0xFA, 0xC5, 0x51) # in BGR modecolor_deep np.zeros((height, width, channel), dtypenp.uint8)color_deep[:] (0xBA, 0x62, 0x00) # in BGR mode# 使用cv2.bitwise_and()函数给数字上色hour_slice1 cv2.bitwise_and(color_deep, color_deep, masknum_mask[current.hour // 10])hour_slice2 cv2.bitwise_and(color_light, color_light, masknum_mask[current.hour % 10])minute_slice1 cv2.bitwise_and(color_deep, color_deep, masknum_mask[current.minute // 10])minute_slice2 cv2.bitwise_and(color_light, color_light, masknum_mask[current.minute % 10])# 绘制时间col_min (image.shape[0]-height)//2row_min (image.shape[1]-width)//6image draw_number(image, hour_slice1, col_min, row_min)image draw_number(image, hour_slice2, col_min, row_minimage.shape[1]//8)image draw_number(image, minute_slice1, col_min, row_minimage.shape[1]//8*3)image draw_number(image, minute_slice2, col_min, row_minimage.shape[1]//8*4)return imagedef main():# 新建背景图像row, col, channel 2160, 3840, 3img_bg np.zeros(shape(row, col, channel), dtypenp.uint8)# 创建窗口并设置属性cv2.namedWindow(win, cv2.WINDOW_NORMAL)cv2.setWindowProperty(win, cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)# 显示图像while True:# 生成带时间的图像并显示img_clock draw_clock(np.copy(img_bg), datetime.now())cv2.imshow(win, img_clock)if cv2.waitKey(10) 0xFF 27:# 等待10ms检测Esc按下事件break# 关闭窗口cv2.destroyAllWindows()if __name__ __main__:main()以下是显示效果 以下是本文的彩蛋使用 cv2.Sobel() 提取数字的边缘并进行显示。 如有错误的地方欢迎指正。