OpenCV-Python 绘图

绘制形状的函数有一些共同的参数,提前在此说明一下:

  1. img:要绘制形状的图片
  2. color:绘制的颜色彩色图就传入BGR的一组值,如蓝色就是(255,0,0) 灰度图,传入一个灰度值就行
  3. thickness:线宽,默认为1;对于矩形/圆之类的封闭形状而言,传入-1表示填充形状
import  cv2
import  matplotlib.pyplot as plt
import  numpy as np
from  PIL import Image, ImageDraw, ImageFont
def line():
    # 创建黑色的图像
    img = np.zeros((300, 300,3), dtype=np.uint8)
    # 绘制一条厚度为5的蓝色对角线

    cv2.line(img,(0,0),(299,299),(255,0,0),5)
    cv2.imshow("img",img)
# 画矩形
def rect():
    # 创建黑色的图像
    img = np.zeros((300, 300, 3), dtype=np.uint8)
    # 右上角绘制一个绿色矩形
    cv2.rectangle(img, (20, 20), (100, 100), (0, 255, 0), 3)
    cv2.imshow("img", img)

# 画圆圈
def cir():
    # 创建黑色的图像
    img = np.zeros((300, 300, 3), dtype=np.uint8)
    # 右上角绘制一个绿色矩形
    cv2.circle(img,(150,150), 80, (0,0,255), 2)
    cv2.imshow("img", img)
# 显示文字
def text():
    # 创建黑色的图像
    img = np.zeros((300, 300, 3), dtype=np.uint8)
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img, 'OpenCV', (10, 280), font, 2, (255, 255, 255), 4, cv2.LINE_AA)
    cv2.imshow("img", img)
def draw():
    # 创建黑色的图像
    img = np.zeros((300, 300, 3), dtype=np.uint8)
    # 绘制一条厚度为5的蓝色对角线
    cv2.line(img, (0, 0), (299, 299), (255, 0, 0), 5)
    cv2.rectangle(img, (20, 20), (100, 100), (0, 255, 0), 2)
    cv2.circle(img, (200, 100), 50, (0, 0, 255),2)
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img, 'OpenCV', (10, 280), font, 2, (255, 255, 255), 4, cv2.LINE_AA)
    cv2.imshow("img", img)
# 填充
def fill():
    # 创建黑色的图像
    img = np.zeros((300, 300,3), dtype=np.uint8)
    # 绘制一条厚度为5的蓝色对角线
    cv2.line(img, (0, 0), (299, 299), (255, 0, 0), 5)
    cv2.rectangle(img, (20, 20), (100, 100), (0, 255, 0), -1)
    cv2.circle(img, (200, 100), 50, (0, 0, 255), -1)
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img, 'OpenCV', (10, 280), font, 2, (255, 255, 255), 4, cv2.LINE_AA)
    cv2.imshow("img", img)
def cv2ImgAddText(img, text, left, top, textColor=(0, 255, 0), textSize=20):
    if (isinstance(img, np.ndarray)):  # 判断是否OpenCV图片类型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    # 创建一个可以在给定图像上绘图的对象
    draw = ImageDraw.Draw(img)
    # 字体的格式
    fontStyle = ImageFont.truetype(
        "simsun.ttc", textSize, encoding="utf-8")
    # 绘制文本
    draw.text((left, top), text, textColor, font=fontStyle)
    # 转换回OpenCV格式
    return cv2.cvtColor(np.asarray(img), cv2.COLOR_RGB2BGR)

#中文中文
def text_zh():
    # 创建黑色的图像
    img = np.zeros((300, 300, 3), dtype=np.uint8)
    img2=cv2ImgAddText(img, "hello中文", 10, 65, (255, 255, 255), 20)
    cv2.imshow("img", img2)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值