opencv入门基础(五)基本图形绘制、文字标注

opencv入门基础(五)基本图形绘制、文字标注

一.基本绘图函数

用opencv自带函数绘制直线,矩形,圆形,折线的程序示例及结果如下:

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 定义颜色,字典形式
colors = {
     'blue':(255,0,0),
          'green':(0,255,0),
          'red':(0,0,255),
          'yellow':(0,255,255),
          'magenta':(255,0,255),
          'white':(255,255,255),
          'black':(0,0,0),
          'gray':(125,125,125),
          'rand':np.random.randint(0,high=256,size=(3,)).tolist(),
          'dark_gray':(50,50,50),
          'light_gray':(220,220,220)}
def show_image(image,title):
    img_RGB = image[:,:,::-1]
    plt.title(title)
    plt.imshow(img_RGB)
    plt.show()
# 创建画布
canvas = np.zeros((400,400,3),np.uint8)  # 默认背景为黑色
# 把黑色背景转换为白色白景,用键值'white'
canvas[:] = colors['white']
show_image(canvas,"Background")

# 画直线:cv2.line(),颜色用键值索引
cv2.line(canvas,(0,0),(400,400),colors['green'],5)
cv2.line(canvas,(0,400),(400,0),colors['black'],5)
show_image(canvas,"cv2.line()")

# 画长方形:cv2.rectangle()
canvas = np.zeros((400,400,3),np.uint8)
canvas[:] = colors['white']
cv2.rectangle(canvas,(10,50),(70,120),colors['green'],3)  # 两点表示左上角和右下角
cv2.rectangle(canvas,(150,50),(200,300),colors['blue'],-1)  # -1表示填充颜色
show_image(canvas,"cv2.rectangle()")

# 画圆形:cv2.circle()
canvas = np.zeros((400,400,3),np.uint8)
canvas[:] = colors['white']
cv2.circle(canvas,(200,200),150,colors['black'],3)
cv2.circle(canvas,(200,200),50,colors['green'],-1)
show_image(canvas,"cv2.circle()")

# 画折线:cv2.polylines()
canvas = np.zeros((400,400,3),np.uint8)
canvas[:] = colors['white']
pts = np.array([[250,5],[220,80],[280,80]],np.int32)
pts = pts.reshape((-1,1,2))
pts2 = np.array([[150,200],[90,130],[280,180]],np.int32)
pts2 = pts2.reshape((-1,1,2))
cv2.polylines(canvas,[pts2],False,colors['black'],5)  # False表示折线之间不闭合,不构成三角形
cv2.polylines(canvas,[pts],True,colors['green'],3)  # True表示这线之间是闭合的,构成三角形
show_image(canvas,"cv2.polylines()")

结果为(空画布、直线、矩形、圆形、折线):
opencv入门基础(五)基本图形绘制、文字标注_第1张图片
opencv入门基础(五)基本图形绘制、文字标注_第2张图片
opencv入门基础(五)基本图形绘制、文字标注_第3张图片
opencv入门基础(五)基本图形绘制、文字标注_第4张图片
opencv入门基础(五)基本图形绘制、文字标注_第5张图片

二.图片上显示文本

线条类型:cv2.LINE_4,cv2.LINE_8,cv2.LINE_AA当显示字体模糊或者大小不合适时可以选用不同的线条类型。

import cv2
import matplotlib.pyplot as plt
import numpy as np
# 定义颜色,字典形式
colors = {
     'blue':(255,0,0),
          'green':(0,255,0),
          'red':(0,0,255),
          'yellow':(0,255,255),
          'magenta':(255,0,255),
          'white':(255,255,255),
          'black':(0,0,0),
          'gray':(125,125,125),
          'rand':np.random.randint(0,high=256,size=(3,)).tolist(),
          'dark_gray':(50,50,50),
          'light_gray':(220,220,220)}
def show_image(image,title):
    img_RGB = image[:,:,::-1]
    plt.title(title)
    plt.imshow(img_RGB)
    plt.show()
# 创建画布
canvas = np.zeros((400,400,3),np.uint8)  # 默认背景为黑色
canvas[:] = colors['light_gray']  # 或者canvas.fill(220)
# 往画布上面输入文本,(50,50)为起始位置,cv2.FONT_HERSHEY_SIMPLEX为字体,cv2.LINE_AA线条类型
cv2.putText(canvas,"Hello World",(50,50),cv2.FONT_HERSHEY_SIMPLEX,0.9,colors['red'],cv2.LINE_4)
cv2.putText(canvas,"Welcome to world",(5,150),cv2.FONT_HERSHEY_SIMPLEX,1.4,cv2.LINE_8)
cv2.putText(canvas,"MRN",(50,300),cv2.FONT_HERSHEY_SIMPLEX,1.9,cv2.LINE_AA)
# 线条类型:cv2.LINE_4,cv2.LINE_8,cv2.LINE_AA
show_image(canvas,"Canvas")

opencv入门基础(五)基本图形绘制、文字标注_第6张图片

你可能感兴趣的:(opencv基础学习,opencv,canvas,python,深度学习,机器学习)