(一)Opencv的GUI特性:3_OpenCV中的绘图函数

如果觉得本篇文章对您的学习起到帮助作用,请 点赞 + 关注 + 评论 ,留下您的足迹💪💪💪

本篇文章为我在学习Opencv时的理解与笔记,一是为了日后查找方便并加深对代码的理解,二是希望能帮助到正在学习Opencv时遇到困难的人。

本文相关推荐阅读:
(一)Opencv的GUI特性:1_图像入门
(一)Opencv的GUI特性:2_视频入门
(一)Opencv的GUI特性:3_OpenCV中的绘图函数

学习目标

  • 学习用OpenCV绘制不同的几何图形

绘制几何图形常用函数

  1. cv2.line():绘制线段
  2. cv2.circle():绘制圆形
  3. cv2.rectangle():绘制矩形
  4. cv2.ellipse():绘制椭圆
  5. cv2.putText():添加文字

在上述所有函数中,您将看到一些常见参数,如下所示:

  • img:要在其中绘制形状的图像
  • color:绘制图形的颜色,对于RGB,传入元组,例如(255,0,0),为蓝色;如使用灰度图,直接输入标量值即可。
  • thickness:线的宽度;默认值为1,如果对闭合图形传递 -1 则填充
  • lineType:线的类型

绘制线段

要画一条线,您需要传递该线的起始坐标和结束坐标。我们将创建一个黑色图像,并在其上从左上角到右下角绘制一条蓝线。

函数:cv2.line(img, pt1,pt2,color,thickness,lineType,)

  • img:需要绘制的图片
  • pt1:线段起始点
  • pt2:线段终止点
  • color:线段颜色,元组形式
  • thickness:线的宽度,负值为填充
  • lineType:线的类型,使用默认值即可
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)

# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制的图片如下:
line

绘制矩形

绘制矩形,需要确定矩形的左上角坐标和右下角坐标。

函数:cv2.rectangle(img, pt1,pt2,color,thickness,lineType,)

  • img:需要绘制的图片
  • pt1:矩形的顶点,即左上角
  • pt2:矩阵终止点,即右下角
  • color:线段颜色,元组形式
  • thickness:线的宽度,负值为填充
  • lineType:线的类型,使用默认值即可
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
#  thickness 负值代表填充
cv2.rectangle(img,(384,0),(510,128),(0,255,0),-3)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制的图片如下:

rectange

绘制圆形

绘制圆形,需要中心点和半径即可。

函数:cv2.circle(img, center,radius,color,thickness,lineType,)

  • img:需要绘制的图片
  • center:圆的圆点
  • radius:圆的半径
  • color:线段颜色,格式为元组形式
  • thickness:线的宽度,如果为负值则为填充
  • lineType:线的类型,使用默认值即可
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),-3)
cv2.circle(img,(447,63), 63, (0,0,255), 3)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制的图片如下:

circle

向图片添加文本

函数:cv2.putText(img,text,org,fontFace,fontScale,color,thickness,lineType)

  • img:需要绘制的图片
  • text:要写下的字符
  • org:文本字符串左下角坐标
  • fontFace: 字体,如 HersheyFonts
  • fontScale:指定字体大小
  • color:颜色
  • thickness:绘制字符线的宽度
  • lineType:为了美观,常选择 cv2.LINE_AA
import numpy as np
import cv2
# 创造一张(512,512,3)的黑色图片
img = np.zeros((512,512,3), np.uint8)
# 画一条宽度为 5 的蓝色斜线
cv2.line(img,(0,0),(400,400),(255,0,0),5)
cv2.rectangle(img,(384,0),(510,128),(0,255,0),-3)
cv2.circle(img,(447,63), 63, (0,0,255), 3)
font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)
# 显示图片
cv2.imshow('picture', img)
# 保存图片
cv2.imwrite('dataset//line.jpg', img)
# 按任意键销毁图像
cv2.waitKey(0)
cv2.destroyAllWindows()

绘制的图片如下:

putText

看到这里,赶快开始敲代码练习一下吧!!💪

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值