Python OpenCV学习之图形绘制总结

目录
  • 背景
  • 一、画线
  • 二、画矩形
  • 三、画圆
  • 四、画多边形
  • 五、画文本
  • 六、鼠标绘制
  • 总结

背景

使用OpenCV进行图形绘制是一种必备的技能,在图像的任务中,不管是图像检测还是图像识别,我们都需要通过绘制图形和绘制文字对处理的结果进行说明,本篇就详细介绍下图形的绘制;

一、画线

line(图像,起始点,终点,颜色,线宽,线形):一般只需要前面四个参数即可;

代码案例:

cv2.line(img, (20, 100), (20, 500), (0,0,255))

画出了一条Y方向上的红色线段;

二、画矩形

这个相对来说是应用最多的一种方法了,往往在检测项目中返回目标的结果就是(x,y,w,h)或者(x1,y1,x2,y2)这两种形式,当然我们这里绘制需要的是第二种形式,而通过左上角点计算右下角也是很简单的;

cv2.rectangle(img, (x1,y1), (x2,y2), (0,0,255), 3)    # 后面两个参数为颜色和线长

简单展示一下我用DeepFashion数据画出矩形框的效果:

三、画圆

画圆在应用的其实并不多,更多的是画点的操作,例如关键点的任务,需要将关键点在目标图像上显示出来;而实际上点就是一个实心圆,这里就介绍画圆和画点的两种形式吧。

# 函数
cv2.circle(img, (x,y), 半径长度, (0,0,255), -1)        // 画一个实心圆(点),最后参数设置为负数
cv2.circle(img, (x,y), 半径长度, (0,0,255), 4)        // 画一个空心圆

下面还是展示我画出关键点的一个效果:

四、画多边形

绘制多边形在实际应用中也很常见,例如分割以及OCR的任务,往往需要用多个点描述出目标的轮廓。

函数原型如下:

polylines(img,点集,是否闭环,颜色…),注意这里的点集必须是32位的

案例代码:

pot = np.array([(100, 100), (200, 200), (300, 400)], np.int32)
cv2.polylines(img, [pot], True, (0, 0, 255))
# 如果输出填充的多边形,用以下api
cv2.fillPoly(img, [pot], (0, 0, 255))

五、画文本

绘制文本在实际项目中,往往用来标记类别,对于一些结果输出,可以通过文本的方式绘制到图像上,便于观察结果和验证;

函数原型:

putText(img,字符串,起始点,字体,字号…)

案例代码:

cv2.putText(img, "Hello World", (100, 100), 字体, 3, (0,0,255))

六、鼠标绘制

实现功能:

可通过鼠标进行基本图形的绘制:按下l画线,按下r画矩形,按下c画圆;

import cv2
import numpy as np

star = (0, 0)
select = 0
img = np.zeros((480, 640, 3), np.uint8)

// 定义鼠标回调函数
def mouse_callback(event, x, y, flags, userdata):
    global star,select
    if (event & cv2.EVENT_LBUTTONDOWN == cv2.EVENT_LBUTTONDOWN):
        star = (x, y)
    elif (event & cv2.EVENT_LBUTTONUP == cv2.EVENT_LBUTTONUP):
        if select == 0:
            cv2.line(img, star, (x, y), (0, 0, 255))
        elif select == 1:
            cv2.rectangle(img, star, (x, y), (0, 0, 255))
        elif select == 2:
            a = (x - star[0])
            b = (y - star[1])
            r = int((a**2+b**2)**0.5)
            cv2.circle(img, star, r, (0, 0, 255))
        else:
            print('no shape')

cv2.namedWindow('drawshape', cv2.WINDOW_NORMAL)
cv2.setMouseCallback('drawshape', mouse_callback, "111")
while True:
    cv2.imshow('drawshape', img)
    key=cv2.waitKey(1) & 0xFF
    if key == ord('q'):
        break
    elif key == ord('l'):
        select = 0
    elif key == ord('r'):
        select = 1
    elif key == ord('c'):
        select = 2

下图是我自己随意画的结果,大家可以创造出更有趣的图画;

总结

常用的图形绘制就是上面的几种,其中中文文本还存在问题(需要引入字体样式文件),在后续会进行补充;之后将学习图形学的一些进阶知识,也是为后续实战做准备;

到此这篇关于Python OpenCV学习之图形绘制详解的文章就介绍到这了,更多相关Python OpenCV图形绘制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python OpenCV实现基本图形绘制

    1.导入模块 import cv2 as cv import numpy as np 2.OpenCV绘图大致步骤 OpenCV 图形绘制步骤 (1)先定义基础画布canvas = np.zeros((400,600,3),dtype=np.uint8)+255 (2)画布分界,(300,0)分别是宽.高cv.line(canvas,(300,0),(300,399),(0,0,0,),2) (3)在画布上绘制图形,如画圆cv.circle(canvas, (150, 300), 88, (0,

  • Python 图形绘制详细代码(二)

    目录 4.条形图 4.1 代码 4.2 输出 4.3 代码的部分解释 5.直方图 5.1 代码 5.2 输出 5.3 代码的部分解释 6.散点图 6.1 代码 6.2 输出 6.3 代码的部分解释 4.条形图 下面介绍条形图的画法. 4.1 代码 import matplotlib.pyplot as plt # x-coordinates of left sides of bars left = [1, 2, 3, 4, 5] # heights of bars height = [10, 2

  • OpenCV 基本图形绘制函数详解

    用于绘制直线的line函数: 用于绘制椭圆的ellipse函数: 用于绘制矩形的rectangle函数: 用于绘制圆的circle函数: 用于绘制填充的多边形的fillPoly函数. #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; using namespac

  • Python 图形绘制详细代码

    目录 1.画第一个图形 1.1 代码 1.2 输出 1.3 代码的部分解释 2.在同一图上绘制两条或多条线 2.1 代码 2.2 输出 2.3 代码的部分解释 3.自定义绘图 3.1 代码 3.2 输出 3.3 代码的部分解释 1.画第一个图形 第一个图形从简单的开始. 1.1 代码 # importing the required module import matplotlib.pyplot as plt # x axis values x = [1,2,3] # corresponding

  • python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)

    最近学了下 python opencv,分享下使用 opencv 在图片上绘制常用图形的方法. 案例中实现了在图片中添加线段.圆形.矩形.椭圆形以及添加文字的方法,使用 opencv2 实现的. 实现方法 1)画线段 cv.line 在图片中绘制一段直线 # 绘制线段 # 参数1:图片 # 参数2:起点 # 参数3:终点 # 参数4:BGR颜色 # 参数5:宽度 cv2.line(img, (60, 40), (90, 90), (255, 255, 255), 2); 参数说明 参数 值 说明

  • Python OpenCV学习之图形绘制总结

    目录 背景 一.画线 二.画矩形 三.画圆 四.画多边形 五.画文本 六.鼠标绘制 总结 背景 使用OpenCV进行图形绘制是一种必备的技能,在图像的任务中,不管是图像检测还是图像识别,我们都需要通过绘制图形和绘制文字对处理的结果进行说明,本篇就详细介绍下图形的绘制: 一.画线 line(图像,起始点,终点,颜色,线宽,线形):一般只需要前面四个参数即可: 代码案例: cv2.line(img, (20, 100), (20, 500), (0,0,255)) 画出了一条Y方向上的红色线段: 二

  • python OpenCV学习笔记之绘制直方图的方法

    本篇文章主要介绍了python OpenCV学习笔记之绘制直方图的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 官方文档 – https://docs.opencv.org/3.4.0/d1/db7/tutorial_py_histogram_begins.html 直方图会让你对图像的强度分布有一个全面的认识.它是一个在x轴上带有像素值(从0到255,但不总是),在y轴上的图像中对应的像素数量的图. 这只是理解图像的另一种方式.通过观察图像的直方图,你可以直

  • python OpenCV学习笔记实现二维直方图

    本文介绍了python OpenCV学习笔记实现二维直方图,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dd/d0d/tutorial_py_2d_histogram.html 在前一篇文章中,我们计算并绘制了一维的直方图.它被称为一维,因为我们只考虑一个特性,即像素的灰度强度值.但是在二维直方图中,你可以考虑两个特征.通常它用于寻找颜色直方图,其中两个特征是每个像素的色调和饱和度值. 有一个python样例(samples/python/c

  • python OpenCV学习笔记直方图反向投影的实现

    本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 官方文档 – https://docs.opencv.org/3.4.0/dc/df6/tutorial_py_histogram_backprojection.html 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每个像素对应于属于我们对象的像素的概率.输出图像将使我们感兴趣的对象比其余部分更白. 该怎么做呢?我们创建一个图像的直方图,其中包

  • python opencv如何实现图片绘制

    这篇文章主要介绍了python opencv如何实现图片绘制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 点和圆 : circle(img,center,radius,color,thickness=None,lineType=None,shift=None).各参数意义及作用如下. img:待画圆所在的图像. center:待画圆的圆心坐标. radius:待画圆的半径. color:待画圆的边框颜色,颜色格式为bgr格式.就是通道值 th

  • Python OpenCV学习之图像形态学

    目录 背景 一.图像二值化 二.自适应阈值 三.腐蚀 四.卷积核获取 五.膨胀 六.开运算 七.闭运算 八.形态学梯度 九.顶帽运算 十.黑帽运算 总结 背景 形态学处理方法是基于对二进制图像进行处理的,卷积核决定图像处理后的效果:形态学的处理哦本质上相当于对图像做前处理,提取出有用的特征,以便后续的目标识别等任务: 一.图像二值化 定义:将图像的每个像素变成两种值,如0和255: 全局二值化的函数原型: threshold(img,thresh,maxVal,type) img:最好是灰度图像

  • Python OpenCV学习之特征点检测与匹配详解

    目录 背景 一.Harris角点 二.Shi-Tomasi角点检测 三.SIFT关键点 四.SIFT描述子 五.SURF 六.ORB 七.暴力特征匹配(BF) 八.FLANN特征匹配 九.图像查找 总结 背景 提取图像的特征点是图像领域中的关键任务,不管在传统还是在深度学习的领域中,特征代表着图像的信息,对于分类.检测任务都是至关重要的: 特征点应用的一些场景: 图像搜索:以图搜图(电商.教育领域) 图像拼接:全景拍摄(关联图像拼接) 拼图游戏:游戏领域 一.Harris角点 哈里斯角点检测主要

  • Python可视化学习之seaborn绘制矩阵图详解

    目录 本文内容速览 1.绘图数据准备 2.seaborn.pairplot 加上分类变量 修改调色盘 x,y轴方向选取相同子集 x,y轴方向选取不同子集 非对角线散点图加趋势线 对角线上的四个图绘制方式 只显示网格下三角图形 图形外观设置 3.seaborn.PairGrid(更灵活的绘制矩阵图) 每个子图绘制同类型的图 对角线和非对角线分别绘制不同类型图 对角线上方.对角线.对角线下方分别绘制不同类型图 其它一些参数修改 本文内容速览 1.绘图数据准备 还是使用鸢尾花iris数据集 #导入本帖

  • Python可视化学习之seaborn绘制线型回归曲线

    目录 本文速览 1.绘图数据准备 2.seaborn.regplot regplot默认参数线型回归图 分别设置点和拟合线属性 置信区间(confidenceinterval)设置 拟合线延伸与坐标轴相交 拟合离散变量曲线 多项式回归(polynomialregression)拟合曲线 3.seaborn.lmplot 按变量分类拟合回归线 散点marker设置 散点调色盘 拟合线属性设置 绘制分面图 本文速览 1.绘图数据准备 依旧使用鸢尾花iris数据集,详细介绍见之前文章. #导入本帖要用

随机推荐