【python-opencv】绘图基础 line() rectangle() circle() ellipse() polylines() fillPoly() putText() 八千字详解~

目录

绘制直线: cv2.line()函数

 一般格式为:

代码示例 读取图像绘制直线:

代码示例 自定义画布: 

绘制矩形:cv2.rectangle()函数 

一般格式为:

代码示例 读取图像绘制矩形:

代码示例 自定义画布: 

绘制圆形:cv2.circle()函数 

一般格式为:

代码示例 读取图像随机绘制实心圆:

代码示例 自定义画布绘制同心圆 :

绘制椭圆:cv2.ellipse()函数:

一般格式:

代码示例 自定义画布生成随机椭圆:   

绘制多边形: cv2.polylines()函数:

一般格式:       

 代码示例 自定义画布生成多边形: 

绘制填充多边形: cv2.fillPoly()函数: 

一般格式:

代码示例 自定义画布生成填充多边形:  

绘制文本: putText()函数:

一般格式:

 代码示例 自定义画布生成镜像文字和手写文字: ​​​​​​​ 

结束


绘制直线: cv2.line()函数

 一般格式为:

        image = cv2.line(image,pt1,pt2,color[,thickness,[lineType,[shift]]])    # []表示可省略

参数: 

        ~image:要绘制的图像

        ~pt1:线段的起点, (x, y)格式的元组

        ~pt2:线段的终点,(x, y)格式的元组

        ~color:所绘制直线的颜色,(b, g, r)格式的元组,或者表示灰度值的标量

        ~thickness:直线的粗细,数字越大线越粗

        ~lineType:直线的类型,为-1,4,8,16,默认为8,(只有实线,数字越大线的锯齿状(毛刺)越不明显)

        ~shift:坐标的缩放比例,(一般不用,省略参数)

代码示例 读取图像绘制直线:

import cv2
import numpy as np


# 读取一张图片
img = cv2.imread(R"C:\Users\lyx15\Pictures\OIP-C.jpg")
# 获取图像的宽和高
rows,cols = img.shape[:2] # 高 宽
print(rows,cols) # 不要超过该数,否则直线会不显示
# 使用shape方法来获取图像的形状信息。
# 返回的形状信息是一个元组(rows, cols, channels),
# 其中rows表示图像的高度,cols表示图像的宽度,channels表示图像的通道数(例如,RGB图像具有3个通道)。
# 在给定的代码中,使用shape方法获取图像的形状信息,
# 并使用[:2]切片操作来获取元组的前两个元素,
# 即图像的高度(rows)和宽度(cols),赋值给变量rows,cols。

# 绘制三条线段
img = cv2.line(img,(0,0),(cols,rows),(0,0,255),3) # 请注意,在OpenCV中,坐标的排列方式是(x, y),其中x表示图像的宽度(沿水平方向),y表示图像的高度(沿垂直方向)。
img = cv2.line(img,(cols-150,0),(cols-150,rows),(255,255,255),5)
img = cv2.line(img,(0,rows-150),(cols,rows-150),(255,0,0),7)

cv2.imshow("img",img)

cv2.waitKey(0)
cv2.destroyWindow()

现象:

代码示例 自定义画布: 

import cv2
import numpy as np

n=300
# 创建一个纯黑图片
img2 = np.zeros((n,n,3),np.uint8) # 索引从0开始
img2 = cv2.line(img2,(0,0),(n,n),(0,0,255),3) # 请注意,在OpenCV中,坐标的排列方式是(x, y),其中x表示图像的宽度(沿水平方向),y表示图像的高度(沿垂直方向)。
img2 = cv2.line(img2,(150,0),(150,n),(255,255,255),5)
img2 = cv2.line(img2,(0,150),(n,150),(255,0,0),7)
cv2.imshow("img2",img2)

cv2.waitKey(0)
cv2.destroyWindow()

现象: 

绘制矩形:cv2.rectangle()函数 

一般格式为:

image = cv2.rectangle(image,pt1,pt2,color[,thickness,[lineType,[shift]]])    # []表示可省略

参数: 

        ~image:要绘制的图像

        ~pt1:线段的起点,(x, y)格式的元组

        ~pt2:线段的终点,(x, y)格式的元组

        ~color:所绘制直线的颜色,(b, g, r)格式的元组,或者表示灰度值的标量

        ~thickness:直线的粗细,数字越大线越粗

        ~lineType:直线的类型,为-1,4,8,16,默认为8,(只有实线,数字越大线的锯齿状(毛刺)越不明显)

        ~shift:坐标的缩放比例,(一般不用,省略参数)

代码示例 读取图像绘制矩形:

import cv2
import numpy as np


# 读取一张图片
img = cv2.imread(R"C:\Users\lyx15\Pictures\lyf.jpg")
# 获取图像的宽和高
rows,cols = img.shape[:2] # 高 宽
print(rows,cols)

# 绘制矩形
img = cv2.rectangle(img,(80,80),(cols-80,rows-120),(0,0,255),3)
# 请注意,起始和结束坐标为矩形主对角线

cv2.imshow("img",img)


cv2.waitKey(0)
cv2.destroyWindow()

现象:  

代码示例 自定义画布: 

import cv2
import numpy as np


n=500
img
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值