opencv从入门到精通 哦吼03

目录

第 2 篇基础篇

绘制图形和文字

线段的绘制

矩形的绘制

 圆形的绘制

多边形的绘制

文字的绘制

 文字的垂直镜像效果

动态绘制图形

图像的几何变换

缩放        

翻转 

​编辑


第 2 篇基础篇

本篇介绍绘制图形和文字、图像的几何变换、图像的阈值处理和图像的运算。学习完这一部分内容后,读者不仅能够直观地看到运用 OpenCV 处理图像后的效果,还能够了解 OpenCV 程序的编码步骤和注意事项。

绘制图形和文字

OpenCV 提供了许多绘制图形的方法,包括绘制线段的 line()方法、绘制矩形的 rectangle()方法、绘制圆形的 circle()方法、绘制多边形的 polylines()方法和绘制文字的 putText()方法。本章将依次对上述各个方法进行讲解,并使用上述方法绘制相应的图形。

       

线段的绘制

 img = cv2.line(img, pt1, pt2, color, thickness)

注意

线条颜色是 RGB 格式的,例如红色的 RGB 值是(255, 0, 0)。但是在 OpenCV 中,RGB 图像的通道顺序被转换成 B→G→R,因此(0, 0, 255)代表的是红色。

绘制线段并拼成一个「王」字。

     import numpy as np # 导入 Python 中的 numpy 模块 
     import cv2

     # np.zeros():创建了一个画布 
     # (300, 300, 3):一个 300 x 300,具有 3 个颜色空间(即 Red、Green 和 Blue)的画布 
     # np.uint8:OpenCV 中的灰度图像和 RGB 图像都是以 uint8 存储的,因此这里的类型也是 uint8
     canvas = np.zeros((300, 300, 3), np.uint8)
     # 在画布上,绘制一条起点坐标为(50, 50)、终点坐标为(250, 50)、蓝色的、线条宽度为 5 的线段 
     canvas = cv2.line(canvas, (50, 50), (250, 50), (255, 0, 0), 5)
     # 在画布上,绘制一条起点坐标为(50, 150)、终点坐标为(250, 150)、绿色的、线条宽度为 10 的线段 
     canvas = cv2.line(canvas, (50, 150), (250, 150), (0, 255, 0), 10)
     # 在画布上,绘制一条起点坐标为(50, 250)、终点坐标为(250, 250)、红色的、线条宽度为 15 的线段 
     canvas = cv2.line(canvas, (50, 250), (250, 250), (0, 0, 255), 15)
     # 在画布上,绘制一条起点坐标为(150, 50)、终点坐标为(150, 250)、黄色的、线条宽度为 20 的线段 
     canvas = cv2.line(canvas, (150, 50), (150, 250), (0, 255, 255), 20)
     cv2.imshow(「Lines」, canvas) # 显示画布 
     cv2.waitKey()
     cv2.destroyAllWindows()

矩形的绘制

OpenCV 提供了用于绘制矩形的 rectangle()方法,使用这个方法既可以绘制矩形边框,也可以绘制实心矩形。rectangle()方法的语法格式如下:

 img = cv2.rectangle(img, pt1, pt2, color, thickness)

 圆形的绘制

OpenCV 提供了用于绘制圆形的 circle()方法,这个方法与 rectangle()方法的功能相同,既可以绘制圆形边框,也可以绘制实心圆形。circle()方法的语法格式如下:

     img = cv2.circle(img, center, radius, color, thickness)

多边形的绘制

openCV 提供了绘制多边形的 polylines()方法,使用这个方法绘制的多边形既可以是闭合的,也可以是不闭合的。polylines()方法的语法格式如下:

 img = cv2.polylines(img, pts, isClosed, color, thickness)

文字的绘制

OpenCV 提供了用于绘制文字的 putText()方法,使用这个方法不仅能够设置字体的样式、大小和颜色,而且能够使字体呈现斜体的效果,还能够控制文字的方向,进而使文字呈现垂直镜像的效果。putText()方法的语法格式如下:

img = cv2.putText(img, text, org, fontFace, fontScale, color, thickness, lineTy

说明

使用 putText()方法时,thickness、lineType 和 bottomLeftOrigin 是可选参数,有无均可。

 注意 绘制文本只能写英文不能写中文 不然会乱码

 文字的垂直镜像效果

在 putText()方法的语法格式中,有一个控制绘制文字时的方向的参数,即 bottomLeftOrigin,其默认值为 False。当 bottomLeftOrigin 为 True 时,文字将呈现垂直镜像效果。

动态绘制图形

import cv2
import time
import numpy as np

width,height=800,800
r=20
x=r+10
y=r+100
x_offer=y_offer=10
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)*255
    cv2.circle(img,(x,y),r,(255,0,0),-1)
    cv2.imshow('img',img)
    time.sleep(1/120)
cv2.destroyAllWindows()

图像的几何变换

几何变换是指改变图像的几何结构,例如大小、角度和形状等,让图像呈现出缩放、翻转、映射和透视效果。这些几何变换操作都涉及复杂、精密的计算,OpenCV 将这些计算过程封装成非常灵活的方法,开发者只需修改一些参数,就能实现图像的变换效果。本章将介绍几种常见的几何变换效果及其实现方法。

缩放        

dst = cv2.resize(src, dsize, fx, fy, interpolation)

         

dsize 参数实现缩放

dsize 参数的格式是一个元组,例如(100, 200),表示将图像按照宽 100 像素、高 200 像素的大小进行缩放。如果使用 dsize 参数,就可以不写 fx 和 fy 参数。

fx 和 fy 参数实现缩放

使用 fx 参数和 fy 参数控制缩放时,dsize 参数值必须使用 None,否则 fx 和 fy 失效。

fx 参数和 fy 参数可以使用浮点值,小于 1 的值表示缩小,大于 1 的值表示放大。其计算公式为:

翻转 

OpenCV 通过 cv2.flip()方法实现翻转效果,其语法如下 

dst = cv2.flip(src, flipCode)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值