• 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)代表的是红色。

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

    1. import numpy as np # 导入 Python 中的 numpy 模块
    2. import cv2
    3. # np.zeros():创建了一个画布
    4. # (300, 300, 3):一个 300 x 300,具有 3 个颜色空间(即 Red、Green 和 Blue)的画布
    5. # np.uint8:OpenCV 中的灰度图像和 RGB 图像都是以 uint8 存储的,因此这里的类型也是 uint8
    6. canvas = np.zeros((300, 300, 3), np.uint8)
    7. # 在画布上,绘制一条起点坐标为(50, 50)、终点坐标为(250, 50)、蓝色的、线条宽度为 5 的线段
    8. canvas = cv2.line(canvas, (50, 50), (250, 50), (255, 0, 0), 5
    9. # 在画布上,绘制一条起点坐标为(50, 150)、终点坐标为(250, 150)、绿色的、线条宽度为 10 的线段
    10. canvas = cv2.line(canvas, (50, 150), (250, 150), (0, 255, 0), 10
    11. # 在画布上,绘制一条起点坐标为(50, 250)、终点坐标为(250, 250)、红色的、线条宽度为 15 的线段
    12. canvas = cv2.line(canvas, (50, 250), (250, 250), (0, 0, 255), 15
    13. # 在画布上,绘制一条起点坐标为(150, 50)、终点坐标为(150, 250)、黄色的、线条宽度为 20 的线段
    14. canvas = cv2.line(canvas, (150, 50), (150, 250), (0, 255, 255), 20
    15. cv2.imshow(「Lines」, canvas) # 显示画布
    16. cv2.waitKey()
    17. 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 时,文字将呈现垂直镜像效果。

    动态绘制图形

    1. import cv2
    2. import time
    3. import numpy as np
    4. width,height=800,800
    5. r=20
    6. x=r+10
    7. y=r+100
    8. x_offer=y_offer=10
    9. while cv2.waitKey(1)==-1:
    10. if x>width-r or x
    11. x_offer*=-1
    12. if y>height-r or y
    13. y_offer*=-1
    14. x+=x_offer
    15. y+=y_offer
    16. img=np.ones((width,height,3),np.uint8)*255
    17. cv2.circle(img,(x,y),r,(255,0,0),-1)
    18. cv2.imshow('img',img)
    19. time.sleep(1/120)
    20. 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)

     

  • 相关阅读:
    消息积压了如何处理?
    jQuery过滤器:筛选jquery对象数组中的DOM对象
    [笔记] 线性筛质数(素数)
    HCIA数据通信——路由协议
    C#.Net筑基-基础知识
    (数据结构)算法的时间复杂度
    计算机毕业设计ssm+vue基本微信小程序的电影票务系统-电影票预订系统
    8.JWT认证
    Android MediaRecorder录音
    Elasticsearch深入理解(十) ——keyword与text的区别
  • 原文地址:https://blog.csdn.net/qq_62218542/article/details/126930389