Python OpenCV学习之图形绘制总结

Python OpenCV学习之图形绘制总结

OpenCV是一个非常强大的计算机视觉库,能够用于各种图像处理任务。在OpenCV中,图形绘制是非常基础的一部分,下面是Python OpenCV图形绘制的总结。

1. 图形绘制函数

OpenCV提供了多种基本的图形绘制函数,包括直线、矩形、圆、多边形等。这些函数都属于cv2模块,下面是一些常用图形绘制函数的代码示例:

1.1 绘制直线

import numpy as np
import cv2

# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)

# 画一条红色直线,起点为(0,0),终点为(511,511),线宽为5
cv2.line(img, (0,0), (511,511), (0,0,255), 5)

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

1.2 绘制矩形

import numpy as np
import cv2

# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)

# 画一个绿色矩形,左上角坐标为(50,50),右下角坐标为(200,200),线宽为3
cv2.rectangle(img,(50,50),(200,200),(0,255,0),3)

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

1.3 绘制圆

import numpy as np
import cv2

# 创建一个黑色图像
img = np.zeros((512, 512, 3), np.uint8)

# 画一个黄色圆,圆心坐标为(256,256),半径为100,线宽为-1(表示填充)
cv2.circle(img,(256,256), 100, (0,255,255), -1)

# 显示图像
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 从鼠标事件中获取绘图坐标

有时候需要从鼠标事件中获取用户绘图的坐标,以完成动态绘制的效果。下面是一段代码示例,从鼠标事件中获取坐标,并在图像上进行动态绘制:

import numpy as np
import cv2

# 定义回调函数,从事件中获取坐标并进行绘制
def draw_circle(event,x,y,flags,param):
    if event == cv2.EVENT_LBUTTONUP:
        cv2.circle(img,(x,y),50,(255,0,0),-1)

# 创建一个黑色图像
img = np.zeros((512,512,3), np.uint8)
cv2.namedWindow('image')

# 注册回调函数
cv2.setMouseCallback('image',draw_circle)

while(1):
    cv2.imshow('image',img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
cv2.destroyAllWindows()

该代码创建了一个黑色图像,并注册了鼠标左键的点击事件。当用户点击鼠标左键时,回调函数将获取到坐标信息并进行绘制,实现了动态绘图的效果。

3. 总结

本文介绍了Python OpenCV图形绘制的基本函数和从鼠标事件中获取绘制坐标的方法。在实际开发中,可以根据需求灵活使用这些函数和方法,完成各种图形绘制任务。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python OpenCV学习之图形绘制总结 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • Python提取频域特征知识点浅析

    请允许我详细讲解 “Python提取频域特征知识点浅析” 的完整攻略。 一、前言 频域特征提取是信号处理中的一个重要步骤,它允许我们将一个时域信号转换到一个频域信号,这样我们就可以通过频率分析获得更多关于信号特征的信息。Python中有很多强大的工具用于频域分析。 二、Python中的频域分析工具 1. NumPy和SciPy NumPy和SciPy是Pyt…

    人工智能概览 2023年5月25日
    00
  • nginx 与后台端口冲突的解决

    关于“nginx与后台端口冲突的解决”,我可以提供下面的攻略: 问题描述 当nginx与后台服务同时运行时,往往会出现端口冲突的问题,此时需要进行相应的解决。 解决步骤 以下是解决步骤的详细说明: 步骤一:查找冲突的端口服务 在Linux系统下,可以通过命令行查看系统上已经启用的端口和对应服务的进程: sudo lsof -i:80(以80端口为例)。如果这…

    人工智能概览 2023年5月25日
    00
  • 宏碁未来蜂鸟轻薄环保电脑怎么样 宏碁未来蜂鸟轻薄环保电脑评测

    宏碁未来蜂鸟轻薄环保电脑评测 宏碁未来蜂鸟轻薄环保电脑是一款采用环保材质设计的轻薄笔记本电脑。它采用了第10代英特尔酷睿处理器、64GB内存和1TB硬盘。在轻薄设计的同时,它不会牺牲性能,让消费者得到了很好的使用体验。 性能 宏碁未来蜂鸟轻薄环保电脑的处理器采用第10代英特尔酷睿处理器,这是目前笔记本电脑市场上性能最优秀的处理器之一。它还配备了64GB内存和…

    人工智能概论 2023年5月25日
    00
  • opencv实现棋盘格检测

    下面是详细讲解 “OpenCV 实现棋盘格检测” 的完整攻略。 1. 棋盘格介绍 棋盘格是一种特殊的二维图案,由一系列黑色和白色正方形交替组成。在计算机视觉领域中,棋盘格被广泛应用于相机标定和三维重建等技术。 2. OpenCV 棋盘格检测方法 在 OpenCV 中,可以使用 findChessboardCorners() 函数实现棋盘格检测。该函数会自动在…

    人工智能概论 2023年5月25日
    00
  • 超好玩的”隔空操物”通过Python MediaPipe库实现

    标题 “超好玩的”隔空操物通过Python MediaPipe库实现 简介 “隔空操物”是一项神奇而有趣的技能,通过手势来控制屏幕上的物品,让你有如开挂一般的感觉。本文介绍使用Python和MediaPipe库实现“隔空操物”的方法,帮助你在编写游戏或其它项目时实现这一功能,提高应用程序的交互性。 MediaPipe的安装 首先,需要安装MediaPipe库…

    人工智能概览 2023年5月25日
    00
  • django 微信网页授权认证api的步骤详解

    下面就来详细讲解“django 微信网页授权认证api的步骤详解”: 1. 概述 网页授权是通过OAuth2.0机制实现的,即用户打开第三方网页时,第三方网页要获取用户的微信基本信息(如昵称、头像等信息)时,需要用户授权才能获取到。本文将介绍如何在Django中使用微信网页授权认证API。 2. 步骤 2.1 获取用户授权链接 第一步是获取用户授权链接。用户…

    人工智能概览 2023年5月25日
    00
  • Jaeger Client Go入门并实现链路追踪

    Jaeger Client Go 入门攻略 简介 Jaeger是一款开源的分布式跟踪系统,它提供了一个用于跟踪服务间请求的平台。Jaeger能够记录和跟踪系统中所有请求,便于开发者快速发现系统中的问题。 本攻略将带领你入门Jaeger Client Go,并实现链路追踪。 安装Jaeger 在开始实现Jaeger Client Go之前,我们需要安装Jaeg…

    人工智能概览 2023年5月25日
    00
  • 对python中的乘法dot和对应分量相乘multiply详解

    在Python中,有两种方式可以进行矩阵乘法或者向量的点积运算:dot和multiply。本文将详细介绍它们的使用方法及区别。 一、dot函数 dot函数是numpy包中提供的函数,用于对于两个数组进行矩阵乘法运算。 函数定义:numpy.dot(a, b) 其中,a和b为数组,可以是一维或二维的。若a和b都是一维数组,则进行向量的点积运算;若a和b都是二维…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部