OpenCV python 交互与绘图图形

OpenCV python 交互与绘图图形

import numpy as np
import cv2

# 全局参数
g_thickness = -1
g_mode = 1

# 1.创建白色背景图
d = 400
img = np.ones((d, d, 3), np.uint8) * 255


# 2.绘制图片函数
def draw(event, x, y, flags, param):
    global g_mode

    # 点击鼠标左键
    if event == cv2.EVENT_LBUTTONDOWN:
        a = np.random.randint(1, d - 50)
        r = np.random.randint(1, d/5)
        angle = np.random.randint(0, 361)
        color = np.random.randint(0, high=256, size=(3, )).tolist()

        if g_mode == 1:  # 矩形
            cv2.rectangle(img, (x, y), (a, a), color, g_thickness)
        elif g_mode == 2:  # 圆形
            cv2.circle(img, (x, y), r, color, g_thickness)
        elif g_mode == 3:  # 线
            cv2.line(img, (a, a), (x, y), color, 3)
        elif g_mode == 4:  # 椭圆
            cv2.ellipse(img, (x, y), (100, 150), angle, 0, 360, color, g_thickness)
        elif g_mode == 5:  # 文字
            cv2.putText(img, "opencv", (0, round(d/ 2)),
                        cv2.FONT_HERSHEY_SIMPLEX, 2, color, 5)


def main():
    global g_mode, g_thickness

    # 3.创建显示窗体 与 回调函数创建
    cv2.namedWindow("img")
    cv2.setMouseCallback("img", draw)

    # 4.显示绘制结果与修改绘制模式
    while True:
        cv2.imshow("img", img)
        key = cv2.waitKey(1) & 0xFF

        if key == ord("r"):  # 矩形
            g_mode = 1
        elif key == ord("c"):  # 圆形
            g_mode = 2
        elif key == ord("l"):  # 线
            g_mode = 3
        elif key == ord("e"):  # 椭圆
            g_mode = 4
        elif key == ord("t"):  # 文字
            g_mode = 5
        elif key == ord("f"):  # 实心
            g_thickness = -1
        elif key == ord("u"):  # 空心
            g_thickness = 3
        elif key == 27:    # 退出
            break

    cv2.imwrite("img.jpg", img)
    cv2.destroyAllWindows()


if __name__ == '__main__':
    main()

绘制结果:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

廷益--飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值