import cv2 as cv
import numpy as np
def draw_opencv_logo():
logo = cv.imread("./images/opencv-logo-white.png")
h,w,c = logo.shape
# 复制一个opencv-logo矩阵,赋值白色
img = np.zeros_like(logo)
# img.fill(255)
# 使用Photoshop测量外径和内径
max_d = 86
max_r = int(max_d / 2)
min_d = 34
min_r = int(min_d / 2)
# 使用Photoshop测量各个圆的颜色
color_red = (68,42,255)
color_green = (103,218,139)
color_blue = (255,141,18)
color_bg = (255,255,255)
color_black = (0,0,0)
# 圆心计算
center_red = (int(w / 2), max_r)
center_green = (max_r, max_d + max_r - 8)
center_blue = (w - max_r, max_d + max_r - 8)
# 顶部红色圆
cv.circle(img, center_red, max_r, color_red, -1,cv.LINE_AA)
cv.circle(img, center_red, min_r, color_black, -1,cv.LINE_AA)
cv.ellipse(img, center_red, (max_r, max_r + 2), 0, 60, 120, color_black, -1,cv.LINE_AA)
# 左侧绿色圆【椭圆整体旋转240度】
cv.circle(img, center_green, max_r, color_green, -1,cv.LINE_AA)
cv.circle(img, center_green, min_r, color_black, -1,cv.LINE_AA)
cv.ellipse(img, center_green, (max_r, max_r + 2), 240, 60, 120, color_black, -1,cv.LINE_AA)
# 右侧蓝色圆【椭圆整体旋转180度】
cv.circle(img, center_blue, max_r, color_blue, -1,cv.LINE_AA)
cv.circle(img, center_blue, min_r, color_black, -1,cv.LINE_AA)
cv.ellipse(img, center_blue, (max_r, max_r + 2), 180, 60, 120, color_black, -1,cv.LINE_AA)
# 绘制下边的文字
cv.putText(img, "OpenCV", (0, h - 15), cv.FONT_HERSHEY_DUPLEX, 1.5, color_bg,4)
# 将原图和自绘图放入一张图片
create_img = np.zeros((h,w*2,3),np.uint8)
# 左边原图,右边刚刚绘制的图片
create_img[:h,:w] = logo
create_img[:h,w:] = img
cv.imshow('opencv_logo', create_img)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == "__main__":
draw_opencv_logo()