opencv-python库 cv2 图形绘制 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putText

07-11 1195阅读

文章目录

  • cv2.line()函数
  • cv2.rectangle()函数
  • cv2.circle()函数
  • cv2.ellipse()函数
  • cv2.polylines()函数
  • cv2.putText()函数

    cv2.line()函数

    cv2.line() 是 OpenCV 中的一个函数,用于在图像上绘制直线。这个函数需要指定图像、线的起点和终点坐标、线的颜色、线的宽度以及线的类型。

    opencv-python库 cv2 图形绘制 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putText
    (图片来源网络,侵删)

    下面是 cv2.line() 函数的详细参数说明:

    cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
    

    参数解释:

    img: 要在其上绘制直线的图像,应该是一个 NumPy 数组。
    pt1: 直线的第一个点,坐标以元组形式给出,例如 (x1, y1)。
    pt2: 直线的第二个点,坐标以元组形式给出,例如 (x2, y2)。
    color: 直线的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
    thickness: 直线的宽度。如果是负数(通常是 -1),则线将被填充,形成一个矩形。
    lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
    shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。例如,点 (10.5, 20.5) 在 shift=1 时将被转换为 (105, 205)。
    

    下面是一个使用 cv2.line() 绘制直线的简单示例:

    import cv2
    import numpy as np
    # 创建一个黑色的空白图像
    image = np.zeros((512, 512, 3), dtype="uint8")
    # 在图像上绘制一条从左上角到右下角的红色直线,宽度为 5
    cv2.line(image, (0, 0), (511, 511), (0, 0, 255), 5)
    # 显示图像
    cv2.imshow("Line", image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.line() 在上面绘制了一条红色的直线,从左上角 (0, 0) 到右下角 (511, 511),直线的宽度设置为 5 像素。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

    cv2.rectangle()函数

    在OpenCV中,cv2.rectangle() 函数用于在图像上绘制矩形。该函数需要指定图像、矩形的左上角和右下角坐标、矩形的颜色、线条宽度以及线条类型。

    下面是 cv2.rectangle() 函数的详细参数说明:

    cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
    

    参数解释:

    • img: 要在其上绘制矩形的图像,应该是一个 NumPy 数组。
    • pt1: 矩形的顶点之一,通常是左上角的坐标,坐标以元组形式给出,例如 (x1, y1)。
    • pt2: 矩形的另一个顶点,通常是右下角的坐标,坐标以元组形式给出,例如 (x2, y2)。
    • color: 矩形的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
    • thickness: 矩形边框的厚度。如果传递负数(例如 -1),则矩形将被填充。
    • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
    • shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。例如,点 (10.5, 20.5) 在 shift=1 时将被转换为 (105, 205)。

      下面是一个使用 cv2.rectangle() 绘制矩形的简单示例:

      import cv2
      import numpy as np
      # 创建一个黑色的空白图像
      image = np.zeros((512, 512, 3), dtype="uint8")
      # 在图像上绘制一个红色的矩形,左上角坐标 (30, 30),右下角坐标 (300, 300),线条宽度为 2
      cv2.rectangle(image, (30, 30), (300, 300), (0, 0, 255), 2)
      # 显示图像
      cv2.imshow("Rectangle", image)
      cv2.waitKey(0)
      cv2.destroyAllWindows()
      

      在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.rectangle() 在上面绘制了一个红色的矩形。矩形的左上角坐标是 (30, 30),右下角坐标是 (300, 300),线条宽度设置为 2 像素。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

      cv2.circle()函数

      在OpenCV中,cv2.circle() 函数用于在图像上绘制圆。这个函数需要指定图像、圆心的坐标、半径、圆的颜色、线条宽度以及线条类型。

      下面是 cv2.circle() 函数的详细参数说明:

      cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
      

      参数解释:

      • img: 要在其上绘制圆的图像,应该是一个 NumPy 数组。
      • center: 圆的中心点坐标,以元组形式给出,例如 (x, y)。
      • radius: 圆的半径,表示从圆心到圆上任意一点的距离。
      • color: 圆的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
      • thickness: 圆的线条宽度。如果传递 -1,则圆将被填充。
      • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
      • shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。例如,点 (10.5, 20.5) 在 shift=1 时将被转换为 (105, 205)。

        下面是一个使用 cv2.circle() 绘制圆的简单示例:

        import cv2
        import numpy as np
        # 创建一个黑色的空白图像
        image = np.zeros((512, 512, 3), dtype="uint8")
        # 在图像上绘制一个红色的圆,圆心在 (256, 256),半径为 100,线条宽度为 2
        cv2.circle(image, (256, 256), 100, (0, 0, 255), 2)
        # 显示图像
        cv2.imshow("Circle", image)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
        

        在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.circle() 在上面绘制了一个红色的圆。圆心的坐标是 (256, 256),半径是 100 像素,线条宽度设置为 2 像素。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

        cv2.ellipse()函数

        在OpenCV中,cv2.ellipse() 函数用于在图像上绘制椭圆。这个函数需要指定图像、椭圆的中心点、椭圆的长半轴和短半轴、旋转角度、椭圆的开始角度和结束角度(以度为单位)、椭圆的颜色、线条宽度以及线条类型。

        下面是 cv2.ellipse() 函数的详细参数说明:

        cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])
        

        参数解释:

        • img: 要在其上绘制椭圆的图像,应该是一个 NumPy 数组。
        • center: 椭圆的中心点坐标,以元组形式给出,例如 (x, y)。
        • axes: 一个元组,表示椭圆的长半轴和短半轴的长度,例如 (a, b)。
        • angle: 椭圆旋转的角度,以度为单位,逆时针方向为正。
        • startAngle 和 endAngle: 椭圆的起始和结束角度,以度为单位,用于绘制椭圆弧。
        • color: 椭圆的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
        • thickness: 椭圆的线条宽度。如果传递 -1,则椭圆将被填充。
        • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
        • shift: 坐标点中的小数位数。默认情况下,坐标是整数。

          下面是一个使用 cv2.ellipse() 绘制椭圆的简单示例:

          import cv2
          import numpy as np
          # 创建一个黑色的空白图像
          image = np.zeros((512, 512, 3), dtype="uint8")
          # 在图像上绘制一个红色的椭圆,中心点 (256, 256),长半轴 100,短半轴 50,旋转 0 度
          cv2.ellipse(image, (256, 256), (100, 50), 0, 0, 360, (0, 0, 255), -1)
          # 显示图像
          cv2.imshow("Ellipse", image)
          cv2.waitKey(0)
          cv2.destroyAllWindows()
          

          在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.ellipse() 在上面绘制了一个红色的椭圆。椭圆的中心点是 (256, 256),长半轴是 100 像素,短半轴是 50 像素,椭圆没有旋转(即 angle=0),绘制完整的椭圆(startAngle=0 和 endAngle=360)。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

          cv2.polylines()函数

          在OpenCV中,cv2.polylines() 函数用于在图像上绘制多条线段。这些线段可以是由一系列的点连接而成的多边形线条。

          以下是 cv2.polylines() 函数的详细参数说明:

          cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])
          

          参数解释:

          • img: 要在其上绘制线段的图像,应该是一个 NumPy 数组。
          • pts: 一个包含多个点坐标的列表或数组,其中每个点由 (x, y) 坐标表示。这些点将按顺序连接以形成线段。
          • isClosed: 一个布尔值,指示线段是否应该闭合。如果为 True,则最后一个点和第一个点将被连接,形成一个闭合的多边形。
          • color: 线段的颜色,对于 BGR,传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
          • thickness: 线段的宽度。如果为负数(例如 -1),则线段将被填充。
          • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
          • shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。

            下面是一个使用 cv2.polylines() 绘制多边形的简单示例:

            import cv2
            import numpy as np
            # 创建一个黑色的空白图像
            image = np.zeros((512, 512, 3), dtype="uint8")
            # 定义多边形的顶点
            pts = np.array([[10, 50], [200, 50], [100, 300], [10, 50]], np.int32)
            # 在图像上绘制多边形线段,不闭合
            cv2.polylines(image, [pts], False, (0, 255, 0), 3)
            # 显示图像
            cv2.imshow("Polygon", image)
            cv2.waitKey(0)
            cv2.destroyAllWindows()
            

            在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.polylines() 在上面绘制了一个绿色的多边形。多边形的顶点坐标存储在 pts 数组中,并通过一个列表传递给 cv2.polylines() 函数。isClosed 参数设置为 False,表示我们不希望线段闭合。线段的宽度设置为 3 像素,颜色为绿色。

            请注意,即使 isClosed 设置为 False,由于 pts 数组中的最后一个点和第一个点相同,所以绘制的线段仍然会闭合。如果你不希望线段闭合,确保 pts 数组中的最后一个点和第一个点不相同。

            cv2.putText()函数

            在OpenCV中,cv2.putText() 函数用于在图像上绘制文本。这个函数在图像上添加文本标注,可以指定文本内容、字体、字号、颜色、线条粗细、线条类型、坐标位置等。

            下面是 cv2.putText() 函数的详细参数说明:

            cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
            

            参数解释:

            • img: 要在其上绘制文本的图像,应该是一个 NumPy 数组。
            • text: 要绘制的文本字符串。
            • org: 文本字符串的起始坐标点,以元组形式给出,例如 (x, y)。该点通常是文本字符串的左下角或基线的起点,这取决于 bottomLeftOrigin 参数。
            • fontFace: 字体类型,例如 cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN 等。OpenCV 提供了几种不同的字体供选择。
            • fontScale: 字体缩放因子,用于控制文本大小。增加这个值将使得文本更大。
            • color: 文本的颜色,对于 BGR,传递一个元组,例如对于白色,传递 (255, 255, 255)。
            • thickness: 文本的线条宽度。如果传递 -1,则文本将被填充。
            • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
            • bottomLeftOrigin: 这是一个布尔值,当为 True 时,文本的起始坐标点是文本字符串的左下角;当为 False 时,起始坐标点是文本字符串的基线起点。默认情况下,这个值是 False。

              下面是一个使用 cv2.putText() 绘制文本的简单示例:

              import cv2
              import numpy as np
              # 创建一个黑色的空白图像
              image = np.zeros((300, 300, 3), dtype="uint8")
              # 在图像上绘制文本
              text = "Hello, OpenCV!"
              org = (50, 50)
              fontFace = cv2.FONT_HERSHEY_SIMPLEX
              fontScale = 1
              color = (255, 255, 255)
              thickness = 2
              cv2.putText(image, text, org, fontFace, fontScale, color, thickness)
              # 显示图像
              cv2.imshow("Text", image)
              cv2.waitKey(0)
              cv2.destroyAllWindows()
              

              在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.putText() 在上面绘制了白色的文本 “Hello, OpenCV!”。文本的起始坐标是 (50, 50),字体类型是 cv2.FONT_HERSHEY_SIMPLEX,字体缩放因子是 1,线条宽度是 2。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]