`
huangyongxing310
  • 浏览: 496296 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

opencv 绘图功能

 
阅读更多
opencv 绘图功能


学习画线、圆和矩形等多种几何形状,给图片添加文字。
绘制各种几何形状、添加文字
OpenCV函数:cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText()

绘制形状的函数有一些共同的参数,
img:要绘制形状的图片
color:绘制的颜色,绘制彩色就传入BGR的一组值,如(255,0,0);灰度图,传入一个灰度值就行
thickness:线宽,默认为1;对于矩形/圆之类的封闭形状而言,传入-1表示填充形状



画线
line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)


画矩形
rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)



画圆
circle(img, center, radius, color, thickness=None, lineType=None, shift=None)



画椭圆
ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=None, lineType=None, shift=None)

# 参数2:椭圆中心(x, y)
# 参数3:x / y轴的长度
# 参数4:angle–椭圆的旋转角度(顺时针)
# 参数5:startAngle–椭圆的起始角度(顺时针)
# 参数6:endAngle–椭圆的结束角度(顺时针)



画多边形
画多边形需要指定一系列多边形的顶点坐标,相当于从第一个点到第二个点画直线,再从第二个点到第三个点画直线….

# 定义四个顶点坐标
pts = np.array([[10, 5],  [50, 10], [70, 20], [20, 30]], np.int32)
# 顶点个数:4,矩阵变成4*1*2维
pts = pts.reshape((-1, 1, 2))


polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)


绘制多条直线
使用cv2.polylines()要比cv2.line()高效很多

polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)

cv2.polylines(img, [line1, line2, line3], True, (0, 255, 255))



添加文字
使用cv2.putText()添加文字,它的参数也比较多,
putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

参数2:要添加的文本
参数3:文字的起始坐标(左下角为起点)
参数4:字体
参数5:文字大小(缩放比例)
参数6:LineTypes
http://ex2tron.wang/opencv-python-drawing-function/



填充填充多边形
fillPoly(img, pts, color, lineType=None, shift=None, offset=None)

# pts多边形的点位置



# -*-encoding:utf-8-*-
import pytesseract
from PIL import Image
from PIL import ImageFilter
from PIL import ImageFont
from PIL import ImageDraw
import numpy as np
from PIL import Image

import cv2


def main():
    # =================================画线
    # 创建一副黑色的图片
    img = np.zeros((512, 512, 3), np.uint8)
    # 画一条线宽为5的蓝色直线,参数2:起点,参数3:终点
    cv2.line(img, (0, 0), (512, 512), (255, 0, 0), 5)



    # =================================画矩形
    # 画一个绿色边框的矩形,参数2:左上角坐标,参数3:右下角坐标
    cv2.rectangle(img, (384, 0), (510, 128), (0, 255, 0), 3)

    # =================================画圆
    # 画一个填充红色的圆,参数2:圆心坐标,参数3:半径
    # cv2.circle(img, (447, 63), 63, (0, 0, 255), -1)
    cv2.circle(img, (447, 63), 63, (0, 0, 255), 1)

    # =================================画椭圆
    # 在图中心画一个填充的半圆
    cv2.ellipse(img, (256, 256), (100, 50), 45, 0, 180, (255, 0, 0), 1)

    # 参数2:椭圆中心(x, y)
    # 参数3:x / y轴的长度
    # 参数4:angle–椭圆的旋转角度(顺时针)
    # 参数5:startAngle–椭圆的起始角度(顺时针)
    # 参数6:endAngle–椭圆的结束角度(顺时针)

    # =================================画多边形
    # 定义四个顶点坐标
    pts = np.array([[10, 5], [50, 10], [70, 20], [20, 30]], np.int32)
    print("pts = ", pts)
    # 顶点个数:4,矩阵变成4*1*2维
    pts = pts.reshape((-1, 1, 2))
    print("pts2 = ", pts)

    print("[pts] = ", [pts])

    cv2.polylines(img, [pts], True, (0, 255, 255))
    # polylines(img, pts, isClosed, color, thickness=None, lineType=None, shift=None)

    # =================================绘制多条直线
    # 使用cv2.polylines()画多条直线
    line1 = np.array([[100, 20], [300, 20]], np.int32).reshape((-1, 1, 2))
    line2 = np.array([[100, 60], [300, 60]], np.int32).reshape((-1, 1, 2))
    line3 = np.array([[100, 100], [300, 100]], np.int32).reshape((-1, 1, 2))
    cv2.polylines(img, [line1, line2, line3], True, (0, 255, 255))

    # =================================添加文字
    # 添加文字
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(img, 'ex2tron', (10, 500), font,
                2, (255, 255, 255), 2, lineType=cv2.LINE_AA)
    # putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

# =================================填充填充多边形
    # 多边形的点位置
    tri1 = np.array([[0, 0], [25, 10], [10, 20]], np.int32)
    cv2.fillPoly(img, [tri1], (255, 255, 255))

    cv2.imshow('line', img)
    cv2.waitKey(0)


if __name__ == '__main__':
    main()








分享到:
评论

相关推荐

    opencv绘图功能

    在本篇文章中,我们将深入探讨OpenCV的绘图功能,了解如何利用这个功能进行图像分析、处理以及可视化。 首先,OpenCV提供了一系列的函数,如`cv2.line()`, `cv2.circle()`, `cv2.rectangle()`, `cv2.polygon()`等,...

    展示opencv的图像绘制功能

    运行这个程序,你会看到一个显示有红色矩形和绿色文本的窗口,这就是OpenCV绘图功能的基本应用。通过调整参数和尝试其他绘图函数,你可以创造出更复杂的图像效果,实现各种视觉呈现。 在实际开发中,OpenCV的图像...

    opencv画板功能实现源程序

    在本项目中,我们将关注如何利用OpenCV来实现一个基础的画板功能。这个画板允许用户在界面上自由绘制,类似于电子白板或者涂鸦应用。 首先,我们需要了解OpenCV中的基本图形绘制函数。`cv2.line()`用于绘制直线,`...

    02-绘图板(openCV源码).zip

    三、OpenCV绘图功能 在OpenCV中,我们可以使用`cv::line()`, `cv::circle()`, `cv::rectangle()`, `cv::polylines()`等函数来绘制线条、圆、矩形和多边形。这些函数接受起点、终点、半径、边框宽度、颜色等参数,...

    opencv绘图板源码.zip

    总的来说,"opencv绘图板源码.zip"提供了一个实践OpenCV图像处理和绘图功能的平台,涵盖了从基本的图像显示到复杂的用户交互。通过分析和学习这个源码,开发者可以加深对OpenCV的理解,提升在C++环境中进行图像处理...

    OpenCV基础操作之绘图功能

    在OpenCV库中,绘图功能是其基本且重要的部分,尤其对于图像处理和计算机视觉应用来说。OpenCV,全称Open Source Computer Vision Library,是一个跨平台的计算机视觉库,支持多种编程语言,包括Python。在本篇内容...

    OpenCV例程鼠标绘图及保存

    "OpenCV例程鼠标绘图及保存"这个项目展示了如何利用OpenCV的功能实现用户通过鼠标在图像上绘制并保存这些修改。在这个过程中,我们主要涉及到以下几个关键知识点: 1. **OpenCV中的事件处理**:OpenCV提供了一套API...

    用OpenCV进行基本绘图

    本文将深入探讨如何使用OpenCV进行基本的图像绘图操作,这是初学者掌握OpenCV功能的一个重要步骤。 首先,OpenCV支持多种编程语言,包括Python、C++等,这里我们主要以Python为例。在Python环境中,你可以通过`...

    ros中调用opencv绘图测试

    ROS(Robot Operating System)是机器人领域...你可以根据需要扩展这个基础模板,使用OpenCV提供的各种功能,如特征检测、图像变换、目标识别等。同时,ROS的强大消息传递机制和节点管理使得多进程协同工作变得简单。

    QtCreator使用Opencv库 demo

    Qt Creator是一款强大的跨平台集成开发环境(IDE),主要用于C++编程,而OpenCV则是一个开源计算机视觉库,提供了丰富的图像处理和计算机视觉功能。 首先,我们需要确保已经安装了Qt Creator和OpenCV库。Qt Creator...

    OpenCV 移动追踪

    将运动的物体从背景中检测出来,通过色差的不同来将移动的物体于背景区别开,...使用一些OpenCV绘图功能来绘制交叉点,并且显示在跟踪的物体图像上,并且在整个监测运动的工程中,可以控制监测点的开关,运行和退出。

    OpenCV实现halcon卡尺工具

    在计算机视觉领域,OpenCV(开源计算机视觉库)是一个广泛使用的库,用于处理图像和视频数据,进行各种图像处理和计算机视觉任务。本教程将详细讲解如何利用OpenCV实现一个类似Halcon的卡尺工具,用于进行精确的测量...

    opencv 画图库

    `GraphUtils.cpp`和`GraphUtils.h`这两个文件很可能是用户自定义的辅助工具类或函数,用于扩展OpenCV的绘图功能。在C++中,`.cpp`文件通常包含实现代码,而`.h`文件则包含类声明或函数原型,以便在其他源文件中进行...

    mfcOpencvTest基于opencv建立的mfc,打开一张图片,并能够在图片上画图

    接着,我们需要创建一个MFC对话框类,该类将承载图像显示和绘图功能。这个对话框通常会包含一个CStatic控件,我们可以通过自定义这个控件来显示OpenCV的IplImage或cv::Mat类型的图像。我们还需要实现OnPaint事件处理...

    用OpenCV进行基本绘图.zip_opencv_简单绘图

    在OpenCV库中,我们可以利用其丰富的图形绘制功能来创建基本的图像和界面,实现一些简单但实用的视觉效果。这个“用OpenCV进行基本绘图”的压缩包可能包含了一系列示例代码,用于演示如何使用OpenCV进行图像绘制。...

    基于OpenCV实现的图片识别功能

    7. 结果可视化:识别结果可以通过OpenCV的绘图函数展示,如`cv2.rectangle()`画矩形框,`cv2.putText()`添加文本注释,以直观地展示识别结果。 在实际项目中,开发者需要根据具体需求选择合适的算法和方法,并进行...

    opencv基础部分代码来自OpenCV样例

    OpenCV库的结构主要分为几个核心部分:CXCORE提供了基础结构和算法,包括XML支持和绘图功能;CV部分专注于图像处理和视觉功能;HighGUI则包含了图形用户界面、图像和视频的输入输出;而CVCam则用于视频流处理。这些...

    openCV快速入门.pdf

    绘图指令是OpenCV中用来在图像上绘制图形和文字的功能。例如,可以使用绘图函数在图像上绘制矩形、圆形、线段等。此外,还可以对图像进行转换,如将彩色图像转换为灰度图像,或者在不同的彩色空间之间进行转换。 ...

    基于OpenCV+WinForm的图形图像渲染控件

    首先,OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,提供了丰富的图像处理和计算机视觉功能。它包含C++、Python等多种语言的接口,使得开发者可以方便地在各种平台上进行...

    MFC,OpenCv2.4.4实现图片显示

    **OpenCV与MFC结合实现图片显示** OpenCV(Open Source Computer Vision Library)是一个...在实际开发中,你可以进一步扩展这个基础,比如添加图像操作功能,或者与其他OpenCV功能(如图像分析、特征检测等)集成。

Global site tag (gtag.js) - Google Analytics