zoukankan      html  css  js  c++  java
  • 计算机视觉之图像绘制(实现绘制线段、矩形、圆形、椭圆、任意多边形、文字和图片等功能)

    1.线段绘制

    调用api中的line方法绘制线段,参数有目标图像dst、线段起点和终点、线段颜色、线段粗细以及线段样式,测试代码如下:

     1 import cv2
     2 import numpy as np
     3 import random
     4 newImageInfo = (500,500,3)
     5 dst = np.zeros(newImageInfo,np.uint8)
     6 # line 绘制线段 参数 1 dst 2 起始位置 3 终止位置 4 color
     7 cv2.line(dst,(100,100),(400,400),(0,0,255))
     8 # line 参数 5 增加一个线条的宽度
     9 cv2.line(dst,(100,200),(400,200),(0,255,255),20)
    10 # line 参数 6 增加一个线条的类型 更加光滑
    11 cv2.line(dst,(100,300),(400,300),(0,255,0),20,cv2.LINE_AA)
    12 # 绘制三角形 就是绘制三条线段 保证起止点一样使得三角形闭合
    13 cv2.line(dst,(200,150),(50,250),(25,100,255),10)
    14 cv2.line(dst,(50,250),(400,380),(25,100,255),10)
    15 cv2.line(dst,(400,380),(200,150),(25,100,255),10)
    16 cv2.imshow('dst',dst)
    17 cv2.waitKey(0)

    运行结果如下:

    2.矩形绘制

    调用api中的rectangle方法实现矩形的绘制,参数有dst目标图像、左上角坐标、右下角坐标、颜色以及是否填充等,测试代码如下:

    1 import cv2
    2 import numpy as np
    3 newImageInfo = (500,500,3)
    4 dst = np.zeros(newImageInfo,np.uint8)
    5 # 绘制矩形 参数 1 dst  2 左上角 3 右下角 4 颜色 5 是否填充 负数填充 正数为线条宽度
    6 cv2.rectangle(dst,(50,100),(200,300),(255,0,0),3)
    7 cv2.imshow('dst',dst)
    8 cv2.waitKey(0)

    运行结果如下:

    3.圆形绘制

    调用api中的circle方法实现矩形的绘制,参数有dst目标图像、圆心、半径、颜色以及是否填充等,测试代码如下:

    1 import cv2
    2 import numpy as np
    3 newImageInfo = (400,400,3)
    4 dst = np.zeros(newImageInfo,np.uint8)
    5 # 绘制圆形 参数 1 dst 2 圆心 3 半径 4 颜色 5 是否填充 负数填充 正数为线条宽度
    6 cv2.circle(dst,(150,150),(50),(0,255,0),2)
    7 cv2.imshow('dst',dst)
    8 cv2.waitKey(0)

    运行结果如下:

    4.椭圆绘制

    调用api中的ellipse方法实现矩形的绘制,参数有dst目标图像、圆心、长短轴、偏转角度、起止角度、颜色以及是否填充等,测试代码如下:

    1 import cv2
    2 import numpy as np
    3 newImageInfo = (400,400,3)
    4 dst = np.zeros(newImageInfo,np.uint8)
    5 # 绘制椭圆形 参数 1 2 圆心 3 轴长度 长轴和短轴 4 偏转角度 5 起始角度 6 终止角度 7 颜色 8 是否填充
    6 cv2.ellipse(dst,(256,256),(150,100),0,0,180,(255,255,0),-1)
    7 cv2.imshow('dst',dst)
    8 cv2.waitKey(0)

    运行结果如下:

    4.任意多边形绘制

     测试代码如下:

     1 import cv2
     2 import numpy as np
     3 newImageInfo = (400,500,3)
     4 dst = np.zeros(newImageInfo,np.uint8)
     5 # 绘制任意多边形
     6 points = np.array([[150,50],[140,140],[200,170],[250,250],[150,50]],np.int32)
     7 print(points.shape)
     8 # 矩阵转置
     9 points = points.reshape((-1,1,2))
    10 print(points.shape)
    11 cv2.polylines(dst,[points],True,(0,255,255),3)
    12 cv2.imshow('dst',dst)
    13 cv2.waitKey(0)

    运行结果如下:

    5.文字绘制

     调用api中的ellipse方法实现矩形的绘制,参数有dst目标图像、坐标、字体样式及大小,颜色,粗细以及线条样式等,测试代码如下:

     1 import cv2
     2 import numpy as np
     3 img = cv2.imread('image0.jpg', 1)
     4 font = cv2.FONT_HERSHEY_SIMPLEX
     5 # 绘制矩形
     6 cv2.rectangle(img,(200,100),(500,400),(0,255,0),3)
     7 # 添加文字 参数 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 linrtype
     8 cv2.putText(img,'This is flower',(100,300),font,1,(200,100,255),2,cv2.LINE_AA)
     9 cv2.imshow('dst',img)
    10 cv2.waitKey(0)

    运行结果如下:

    6.图片绘制

    测试代码如下:

     1 import cv2
     2 img = cv2.imread('Jerry.jpg',1)
     3 height = int(img.shape[0]*0.2)
     4 width = int(img.shape[1]*0.2)
     5 imgResize = cv2.resize(img,(width,height))
     6 for i in range(0,height):
     7     for j in range(0,width):
     8         img[i+100,j+120] = imgResize[i,j]
     9 cv2.imshow('src',img)
    10 cv2.waitKey(0)

    运行结果如下:

  • 相关阅读:
    力扣 503 :下一个更大元素 II
    力扣 684 :冗余连接
    时间空间复杂度
    并查集
    UE4解决贴花拉伸的简单办法
    《程序员修炼之道Ⅱ》读书简记
    mac中安装支持m1的软件,提示已损坏问题解决
    在idea中构建gradle项目报错Command line is too long
    向上向下取整
    web端开发工具下载地址
  • 原文地址:https://www.cnblogs.com/wydxry/p/10899416.html
Copyright © 2011-2022 走看看