opencv基础篇 ——(十六)图形绘制与填充

32 篇文章 5 订阅

        OpenCV 提供了丰富的图形绘制和填充功能,主要通过 cv::rectanglecv::circlecv::linecv::polylinescv::fillPoly 和 cv::ellipse 等函数实现。以下是一些基本的图形绘制和填充操作的说明:

  1. 矩形:

    • 函数: cv::rectangle
    • 语法: cv::rectangle(img, rect, color, thickness, lineType, shift)
    • 参数:
      • img: 目标图像。
      • rectcv::Rect 类型的对象,定义矩形的左上角和右下角坐标。
      • color: 矩形的颜色,如 cv::Scalar(255, 0, 0) 代表红色。
      • thickness: 线条的宽度,如果为负值,表示填充矩形。
      • lineType: 线型,如 cv::LINE_8(8-连接线)或 cv::LINE_AA(抗锯齿线)。
      • shift: 位移量,用于指定坐标的小数部分。
  2. :

    • 函数: cv::circle
    • 语法: cv::circle(img, center, radius, color, thickness, lineType, shift)
    • 参数与 cv::rectangle 类似,但 rect 替换为圆心 (center) 和半径 radius
  3. 线:

    • 函数: cv::line
    • 语法: cv::line(img, pt1, pt2, color, thickness, lineType, shift)
    • 参数:
      • pt1 和 pt2: 定义线的两个端点。
      • 其他参数与 cv::rectangle 相同。
  4. 多边形:

    • 函数: cv::polylines 和 cv::fillPoly
    • cv::polylines 用于绘制未闭合的多边形线条,cv::fillPoly 用于填充多边形。
    • 语法: cv::polylines(img, points, isClosed, color, thickness, lineType, shift, connectType)
    • 参数:
      • points: 一个包含多边形顶点的 std::vector<std::vector<cv::Point>>
      • isClosed: 如果 true,多边形被视为闭合的,可以用于填充。
      • 其他参数与 cv::line 类似。
  5. 椭圆:

    • 函数: cv::ellipse
    • 语法: cv::ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)
    • 参数:
      • center: 椭圆中心。
      • axescv::Size 类型,定义椭圆的主轴长度。
      • angle: 主轴相对于水平轴的角度。
      • startAngle 和 endAngle: 指定椭圆弧的起始和结束角度(以度为单位)。
      • 其他参数与 cv::rectangle 相似。
  6. 凸多边形:

    • 函数: cv::fillConvexPoly
    • cv::fillConvexPoly中用于填充凸多边形的一个函数
    • 语法:fillConvexPoly(InputOutputArray img, InputArray points, const Scalar& color, int lineType = LINE_8,int shift = 0);
    • 参数:
      • pts: 指向凸多边形顶点坐标的指针。顶点顺序需按照顺时针或逆时针方向排列。
      • npts: 多边形顶点的数量。
      • color: 填充颜色,类型为 cv::Scalar,例如 cv::Scalar(colorB, colorG, colorR),分别代表 BGR 通道的值。
      • lineType: 可选参数,定义边界线的类型,默认为 cv::LINE_8,表示 8 连接线。
      • shift: 可选参数,点坐标中小数点的位置,一般情况下设为 0。

这些函数都直接修改输入图像 img,因此在绘制前要确保图像有足够的通道(例如,CV_8UC3 表示一个 8 位、3 通道的彩色图像)。同时,颜色 color 可以是 RGB 三元组,也可以是灰度值。

效果展示:

  • 凸多边形填充

  • 多边形绘制

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV是一款非常强大的计算机视觉库,其中包含了很多功能强大的图像处理和计算机视觉算法。而在这个系列的第三文章中,我们将重点介绍如何在OpenCV绘制图形和文本。 OpenCV绘制图形的函数包括cv2.line(直线),cv2.rectangle(矩形),cv2.circle(圆),cv2.ellipse(椭圆)和cv2.putText(文本)。这些函数的使用非常简单,只需要指定图像,开始点和结束点(或中心点和半径),颜色和线宽即可。 例如,我们可以使用cv2.rectangle函数在图像上绘制一个矩形: ``` import cv2 import numpy as np img = np.zeros((512,512,3), np.uint8) # 创建一个黑色的图像 cv2.rectangle(img,(384,0),(510,128),(0,255,0),3) # 绘制矩形 cv2.imshow("image",img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们首先创建了一个512x512的黑色图像,然后使用cv2.rectangle函数在图像上绘制了一个矩形,并将其显示出来。在这里,矩形的左上角坐标是(384,0),右下角坐标是(510,128),颜色是绿色(0,255,0),线宽为3。 除了绘制图形,我们也可以使用cv2.putText函数在图像上绘制文本。这个函数的使用也非常简单,只需要指定图像,文本内容,位置,字体,字体大小和颜色即可。 例如,我们可以使用cv2.putText函数在图像上写入一个“Hello World!”的文本: ``` import cv2 import numpy as np img = np.zeros((512,512,3), np.uint8) # 创建一个黑色的图像 font = cv2.FONT_HERSHEY_SIMPLEX # 设置字体 cv2.putText(img,'Hello World!',(10,500), font, 1,(255,255,255),2,cv2.LINE_AA) # 绘制文本 cv2.imshow("image",img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这个例子中,我们使用cv2.putText函数在左下角绘制了一个“Hello World!”的文本,并将其显示出来。在这里,我们首先选取了字体类型为cv2.FONT_HERSHEY_SIMPLEX,然后指定了文本的位置(10,500),字体大小为1,颜色为白色(255,255,255),线宽为2,并且使用了cv2.LINE_AA参数,以实现更好的文本渲染效果。 综上所述,OpenCV中可以很方便地对图像进行绘制和文本处理,这对于图像处理和计算机视觉应用来说是非常重要的一步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值