人生的旅途,前途很远,也很暗。
然而不要怕,不怕的人面前才有路。
—— 鲁 迅
虽寒冬已近,但,我们的心依旧温暖;python实战,我们一直在路上,请欣赏今天的实战内容,耐心点哦!
一、效果展示
二、主要函数讲解
2.1 新建一个画板并填充成白色,并画出原盘
# 1. 新建一个画板并填充成白色
img = np.zeros((450, 450, 3), np.uint8)
img[:] = (255, 255, 255)
# 2. 画出圆盘
cv2.circle(img, center, radius, (0, 0, 0), thickness=5)
分析:首先用numpy(np)生成了长宽高的全0数据,之后再用cv2.circle函数画圆。
2.2 画出60条秒和分钟的刻线
# 3. 画出60条秒和分钟的刻线
for i in range(60):
# 最外部圆,计算A点
x1 = center_x + (radius - margin) * math.cos(i * 6 * np.pi / 180.0)
y1 = center_y + (radius - margin) * math.sin(i * 6 * np.pi / 180.0)
pt1.append((int(x1), int(y1)))
# 同心小圆,计算B点
x2 = center_x + (radius - 15) * math.cos(i * 6 * np.pi / 180.0)
y2 = center_y + (radius - 15) * math.sin(i * 6 * np.pi / 180.0)
cv2.line(img, pt1[i], (int(x2), int(y2)), (255, 0, 0), thickness=2)
分析:循环绘制60次,重点函数在于cv2.line,它的功能是绘制线段,前面都是对线段的属性进行配置。
2.3 主函数
while (1):
# 不断拷贝表盘图,才能更新绘制,不然会重叠在一起
temp = np.copy(img)
# 5. 获取系统时间,画出动态的时-分-秒三条刻线
now_time = datetime.datetime.now()
hour, minute, second = now_time.hour, now_time.minute, now_time.second
# 画秒刻线
# OpenCV中的角度是顺时针计算的,所以需要转换下
sec_angle = second * 6 + 270 if second <= 15 else (second - 15) * 6
sec_x = center_x + (radius - margin) * math.cos(sec_angle * np.pi / 180.0)
sec_y = center_y + (radius - margin) * math.sin(sec_angle * np.pi / 180.0)
cv2.line(temp, center, (int(sec_x), int(sec_y)), (203, 255, 166), 2)
# 画分刻线
min_angle = minute * 6 + 270 if minute <= 15 else (minute - 15) * 6
min_x = center_x + (radius - 35) * math.cos(min_angle * np.pi / 180.0)
min_y = center_y + (radius - 35) * math.sin(min_angle * np.pi / 180.0)
cv2.line(temp, center, (int(min_x), int(min_y)), (186, 199, 255), 8)
# 画时刻线
hour_angle = hour * 30 + 270 if hour <= 3 else (hour - 3) * 30
hour_x = center_x + (radius - 65) * math.cos(hour_angle * np.pi / 180.0)
hour_y = center_y + (radius - 65) * math.sin(hour_angle * np.pi / 180.0)
cv2.line(temp, center, (int(hour_x), int(hour_y)), (255, 198, 26), 15)
再次欣赏效果图:
今天的实战分享结束了,我们学习了一个动态时钟的python实现,比较费力的是各种角度和线条的换算和绘制,希望大家了解就好,另外代码还有很多可以改善的地方,期待大家去发现,我们下期再会。
编辑:玥怡居士|审核:小圈圈居士
▼
往期精彩回顾
▼
▼
更多精彩推荐,请关注我们
▼
居士之家
微信号 : IT进阶之旅
长按识别二维码关注
你点的每个赞,我都认真当成了喜欢