IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> OpenCV-Python绘制图形和文字 -> 正文阅读

[人工智能]OpenCV-Python绘制图形和文字

一、线段的绘制

绘制线段并拼成一个“王”字

import numpy as np
import cv2

canvas = np.zeros((300,300,3),np.uint8)  # 创建一个画布
canvas = cv2.line(canvas,(50,50),(250,50),(255,0,0),5)  # 在画布上绘制一条起点坐标为(50,50)、终点坐标为(250,50)、蓝色的、线条宽度为5的线段
canvas = cv2.line(canvas,(50,150),(250,150),(0,255,0),10)
canvas = cv2.line(canvas,(50,250),(250,250),(0,0,255),15)
canvas = cv2.line(canvas,(150,50),(150,250),(0,255,255),20)
cv2.imshow("Lines",canvas)
cv2.w

二、矩形的绘制

绘制一个矩形边框

import numpy as np
import cv2
canvas = np.ones((300,300,3),np.uint8)
canvas = cv2.rectangle(canvas,(50,50),(200,150),(255,255,0),20)  # 在画布上绘制一个左上角坐标为(50,50)、右下角坐标为(200,150)、青色的、线条宽度为20的矩形边框
cv2.imshow("Rectangle",canvas)
cv2.waitKey()

绘制一个实心矩形

import numpy as np
import cv2

canvas = np.ones((300, 300, 3), np.uint8)
canvas = cv2.rectangle(canvas, (50, 50), (200, 150), (255, 255, 0), -1)
cv2.imshow("Rectangle", canvas)
cv2.waitKey()

绘制正方形

import numpy as np
import cv2

canvas = np.zeros((300,300,3),np.uint8)
canvas = cv2.rectangle(canvas,(50,50),(250,250),(0,0,255),40)
canvas = cv2.rectangle(canvas,(90,90),(210,210),(0,255,255),30)
canvas = cv2.rectangle(canvas,(120,120),(180,180),(0,0,255),20)
canvas = cv2.rectangle(canvas,(140,140),(160,160),(0,0,255),-1)
cv2.imshow("Square",canvas)
cv2.waitKey()

三、圆形的绘制

绘制“交通灯”

import numpy as np
import cv2

canvas = np.ones((100,300,3),np.uint8)
canvas = cv2.circle(canvas,(50,50),40,(0,0,255),-1)  # 在画布上,绘制一个圆心坐标为(50,50)、半径为40、红色的实心圆形
canvas = cv2.circle(canvas,(150,50),40,(0,255,255),-1)
canvas = cv2.circle(canvas,(250,50),40,(0,255,0),-1)
cv2.imshow("Circle",canvas)
cv2.waitKey()

绘制同心圆

import numpy as np
import cv2

canvas = np.zeros((300, 300, 3), np.uint8)
center_X = int(canvas.shape[1] / 2)  # 圆心的横坐标等于画布的宽度的一半
center_Y = int(canvas.shape[0] / 2)  # 圆心的横坐标等于画布的宽度的一半
for r in range(0, 150, 30):
    cv2.circle(canvas, (center_X, center_Y), r, (0, 255, 0), 6)
cv2.imshow("Circle", canvas)
cv2.waitKey()

绘制33个随机实心圆

import numpy as np
import numpy as pnp
import cv2

canvas = np.zeros((300,300,3),np.uint8)
for i in range(0,32):
    center_X = np.random.randint(0,high = 300)
    center_Y = np.random.randint(0,high = 300)
    radius = np.random.randint(11,high = 71)  # 获取随机半径,这个半径的取值在[11,71)之间
    color = np.random.randint(0,high = 256,size = (3,)).tolist()  # 获得随机的线条颜色,这个颜色由3个在[0,256]范围内的随机数组成的列表表示
    cv2.circle(canvas,(center_X,center_Y),radius,color,-1)
cv2.imshow("Circle",canvas)
cv2.waitKey()

因为OpenCV中的颜色值是一个列表,所以 color = np.random.randint(0,high = 256,size = (3,)).tolist() 中的tolist()不能省略,否则运行程序会发生错误。

四、多边形的绘制

import numpy as np
import cv2

canvas = np.zeros((300,300,3),np.uint8)
pts = np.array([[100,50],[200,50],[250,250],[50,250]],np.int32)
canvas = cv2.polylines(canvas,[pts],True,(0,255,0),4)
cv2.imshow("pts",canvas)
cv2.waitKey()

五、文字的绘制

import numpy as np
import cv2

canvas = np.ones((100,500,3),np.uint8)*255
cv2.putText(canvas,"SmartBoy",(20,70),cv2.FONT_HERSHEY_TRIPLEX,2,(255,0,0),5)
cv2.imshow("SmartBoy",canvas)
cv2.waitKey()

语法格式:

img = cv2.putText(img,text,org,fontFace,fontScale,color,lintType,bottomLeftOrigin)

字体样式

字体样式含义
FONT_HERSHEY_SIMPLEX正常大小的sans-serif字体
FONT_HERSHEY_PLAIN小号的sans-serif字体
FONT_HERSHEY_DUPLEX正常大小的sans-serif字体(比SIMPLE字体样式复杂)
FONT_HERSHEY_COMPLEX正常大小的serif字体
FONT_HERSHEY_TRIPLEX正常大小的serif字体
FONT_HERSHEY_COMPLEX_SMALL简化版
FONT_HERSHEY_SCRIPT_SIMPLEX手写风格
FONT_HERSHEY_SCRIPT_COMPLEX进阶版
FONT_ITALIC斜体

在图像上绘制文字

import cv2

img = cv2.imread("logo.jpg")
cv2.putText(img,"SmartBoy",(30,50),cv2.FONT_HERSHEY_SIMPLEX,1,(255,255,0),2)
cv2.imshow("logo",img)
cv2.waitKey()

动态绘制图像

import cv2
import time
import numpy as np

width, height = 200, 200
r = 20
x = r + 20
y = r + 100
x_offer = y_offer = 4

while cv2.waitKey(1) == -1:
    if x > width - r or x < r:
        x_offer *= -1
    if y > height - r or y < r:
        y_offer *= -1
    x += x_offer
    y += y_offer
    img = np.ones((width, height, 3), np.uint8) * 150
    cv2.circle(img, (x, y), r, (255, 0, 0), -1)
    cv2.imshow("img", img)
    time.sleep(1 / 60)
cv2.destoryAllWindows()

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:33:42  更:2022-10-17 12:35:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 20:02:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码