文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python OpenCV中如何进行图形绘制

2023-06-22 08:49

关注

这篇文章将为大家详细讲解有关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数据画出矩形框的效果:

Python OpenCV中如何进行图形绘制

三、画圆

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

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

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

Python OpenCV中如何进行图形绘制

四、画多边形

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

函数原型如下:

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

案例代码:

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

五、画文本

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

函数原型:

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

案例代码:

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

六、鼠标绘制

实现功能:

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

import cv2import numpy as npstar = (0, 0)select = 0img = 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中如何进行图形绘制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯