图像处理之opencv形状绘制

1、线段绘制

  • cv2.line()
  • 参数:1、dst; 2、起始位置; 3、结束位置; 4、颜色;5、粗细
  • 与左上角为坐标原点,坐标为(x , y)
import cv2
import numpy as np
newImageInfo = (400, 400, 3)#定义图片的宽高信息
dst = np.zeros(newImageInfo, np.uint8)
# 绘制线段
#参数:1、dst; 2、起始位置; 3、结束位置; 4、颜色
cv2.line(dst, (100, 100), (300, 300), (0, 0, 255))#中间右斜倾红线

# 5、line w
cv2.line(dst, (100,300), (100, 200), (0, 255, 255), 20)#金黄色竖线
# 6、line type
cv2.line(dst, (150,300), (150, 200), (255, 0, 0), 20, cv2.LINE_AA)#蓝色竖线,尖端比较平滑

#固定三个点,连接三条线,就可以得到一个三角形
cv2.line(dst,(120, 100), (300, 240), (0, 255, 0), 3)
cv2.line(dst,(300, 240), (320, 80), (0, 255, 0), 3)
cv2.line(dst,(120, 100), (320, 80), (0, 255, 0), 3)

cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

2、矩形绘制

  • cv2.rectangle()
  • 参数:1、dst; 2、左上角;3、右下角;4、颜色;5、“-1”为填充,大于“0”为粗细
import cv2
import numpy as np
newImageInfo = (300, 300, 3)#定义图片的宽高信息
dst = np.zeros(newImageInfo, np.uint8)
cv2.rectangle(dst, (50,50), (250,250), (0, 255, 0), -1)#-1为填充
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

3、圆形绘制

  • cv2.circle()
  • 参数:1、dst; 2、圆心;3、半径;4、颜色;5、“-1”为填充,大于“0”为粗细
import cv2
import numpy as np
newImageInfo = (300, 300, 3)#定义图片的宽高信息
dst = np.zeros(newImageInfo, np.uint8)
cv2.circle(dst, (150,150), 100, (0, 255, 0), 2)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

4、弧形

4.1、半椭圆

  • cv2.ellipse()
  • 参数:1、dst; 2、椭圆圆心;3、轴(长轴 , 短轴);4、角度;5、开始;6、结束;7、颜色;8、边框
import cv2
import numpy as np
newImageInfo = (300, 300, 3)#定义图片的宽高信息
dst = np.zeros(newImageInfo, np.uint8)
cv2.ellipse(dst, (150,150), (150,80), 180, 0, 180, (0, 255, 255), -1)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

4.2、椭圆

import cv2
import numpy as np
newImageInfo = (300, 300, 3)#定义图片的宽高信息
dst = np.zeros(newImageInfo, np.uint8)
cv2.ellipse(dst, (150,150), (150,80), 0, 0, 360, (0, 255, 0), 2)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

5、任意形状图形的绘制

  • cv2.polylines()方法
import cv2
import numpy as np
newImageInfo = (300, 300, 3)#定义图片的宽高信息
dst = np.zeros(newImageInfo, np.uint8)
#指定图形中的各个点
points = np.array([[150, 50], [140, 140], [200, 170], [280, 250],[150, 50]], np.int32)
points = points.reshape((-1, 1, 2))
cv2.polylines(dst, [points], True, (0, 255, 255), 2)#2是边框宽度
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

6、图片文字绘制

  • cv2.putText()
  • 参数: 1、dst; 2、文字内容;3、坐标; 4、字体; 5、字体大小; 6、颜色; 7、细条粗细; 8、线条形状
import cv2
import numpy as np
img = cv2.imread('image.jpg', 1)#1读取彩色图片
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.rectangle(img, (100, 70), (350, 260), (0, 255, 0), 2)#圈出图中的花瓣
# 1、dst; 2、文字内容;3、坐标; 4、字体; 5、字体大小; 6、颜色; 7、细条粗细; 8、线条形状
cv2.putText(img, "this is flower", (100, 110), font, 1, (100,0,255), 2, cv2.LINE_AA)
cv2.imshow('dst', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

7、图片缩放重合展示

import cv2
img = cv2.imread('image.jpg', 1)#1读取彩色图片
height = int(img.shape[0]*0.4)
width = int(img.shape[1]*0.4)
imgResize = cv2.resize(img, (width, height))
for i in range(0, height):
    for j in range(0, width):
        img[i+100, j+200] = imgResize[i, j]
cv2.imshow('src', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

发布了71 篇原创文章 · 获赞 39 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ayouleyang/article/details/104119825