首页 > 其他分享 >OpenCV基础:绘制基本图形

OpenCV基础:绘制基本图形

时间:2025-01-18 09:29:42浏览次数:3  
标签:image cv2 thickness OpenCV 400 np import 图形 绘制

OpenCV 是一个强大的图像处理库,可以轻松实现图形绘制功能。本文将通过代码示例,介绍如何使用 OpenCV 在图像上绘制常见的图形,包括直线、矩形、圆形、椭圆、多边形以及绘制字体。


1. 画线

API: cv2.line(image, pt1, pt2, color, thickness)

参数说明:

  • image:目标图像。
  • pt1:线段起点,格式为 (x, y)。
  • pt2:线段终点,格式为 (x, y)。
  • color:线条颜色,格式为 (B, G, R)。
  • thickness:线条的粗细,默认值为 1。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一条白色的直线
cv2.line(image, (50, 50), (350, 350), (255, 255, 255), thickness=2)

# 显示结果
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:


2. 画矩形

API: cv2.rectangle(image, pt1, pt2, color, thickness)

参数说明:

  • pt1:矩形左上角坐标 (x, y)。
  • pt2:矩形右下角坐标 (x, y)。
  • thickness:正值表示矩形边框的粗细,负值表示填充整个矩形。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一个绿色矩形
cv2.rectangle(image, (100, 100), (300, 200), (0, 255, 0), thickness=3)

cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:


3. 画圆

API: cv2.circle(image, center, radius, color, thickness)

参数说明:

  • center:圆心坐标 (x, y)。
  • radius:圆的半径。
  • thickness: 正值 - 圆的边框粗细,负值 - 填充整个圆。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一个蓝色圆
cv2.circle(image, (200, 200), 50, (255, 0, 0), thickness=-1)

cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()


 运行结果:


4. 画椭圆

API: cv2.ellipse(image, center, axes, angle, startAngle, endAngle, color, thickness)

参数说明:

  • center:椭圆中心点 (x, y)。
  • axes:椭圆的长轴和短轴长度 (major_axis, minor_axis)。
  • angle:椭圆的旋转角度(以度为单位)。
  • startAngle 和 endAngle:椭圆弧的起始和终止角度。
  • thickness:正值 - 椭圆边框粗细,负值 - 填充整个椭圆。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制一个红色椭圆
cv2.ellipse(image, (200, 200), (100, 50), 45, 0, 360, (0, 0, 255), thickness=2)

cv2.imshow("Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行效果:


5. 画多边形

API: cv2.polylines(image, pts, isClosed, color, thickness)

参数说明:

  • pts:多边形的顶点集合,格式为 np.array([[x1, y1], [x2, y2], ...], dtype=np.int32)。
  • isClosed:布尔值,是否闭合多边形。
  • color:多边形边框的颜色。
  • thickness:边框的粗细。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 定义多边形顶点
points = np.array([[150, 150], [250, 150], [300, 250], [200, 300]], dtype=np.int32)

# 绘制多边形
cv2.polylines(image, [points], isClosed=True, color=(255, 255, 0), thickness=2)

cv2.imshow("Polygon", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:


6. 绘制字体

API: cv2.putText(image, text, org, fontFace, fontScale, color, thickness, lineType)

参数说明:

  • text:要绘制的字符串。
  • org:文本的左下角坐标 (x, y)。
  • fontFace:字体类型,常用值包括:
  • cv2.FONT_HERSHEY_SIMPLEX:普通字体。
  • cv2.FONT_HERSHEY_COMPLEX:复杂字体。
  • fontScale:字体的缩放比例。
  • thickness:字体的粗细。
  • lineType:线条类型(如 cv2.LINE_AA 表示抗锯齿线条)。

代码示例:

import cv2
import numpy as np

# 创建一个空白图像
image = np.zeros((400, 400, 3), dtype=np.uint8)

# 绘制文本
cv2.putText(image, "OpenCV Hello World", (50, 350), cv2.FONT_HERSHEY_SIMPLEX, 
            fontScale=1, color=(255, 255, 255), thickness=2, lineType=cv2.LINE_AA)

cv2.imshow("Text", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:

标签:image,cv2,thickness,OpenCV,400,np,import,图形,绘制
From: https://blog.csdn.net/u011186532/article/details/145133180

相关文章

  • Python图形用户界面(GUI)库
    Python图形用户界面(GUI)库是用于创建图形用户界面的工具集,它们允许开发者使用Python语言来构建具有图形元素的用户界面。以下是一些常用的PythonGUI库:1.Tkinter•简介:Tkinter是Python的标准GUI库,它提供了创建窗口、按钮、文本框和其他GUI组件的工具。由于它是Python安装包......
  • 21章6节:绘制三维等值面图、三维等值体素图和三维多边形图
    三维可视化技术在数据科学和科研领域中扮演着越来越重要的角色,特别是在展示复杂三维数据的模式和结构方面。借助三维等值面图、等值体素图和多边形图,研究者可以在空间维度上深入洞察数据的分布特性。这些可视化方法不仅能有效提升研究的直观性,还能为科学决策提供重要依据。本......
  • Qt+OpenCV实现图片压缩(JPEG、PNG)
    一、概述需求:1.编写一个小工具实现图片压缩2.图片仅支持JPEG和PNG格式3.目的是压缩图片在磁盘中所占用的大小4.使用的开发语言是Qt、C++、OpenCV5.压缩的质量可以动态调节如下图所示:ps:1.如果图片是jpeg......
  • 绘制三角形
    #include<GLFW/glfw3.h>intmain(void){GLFWwindow*window;/*Initializethelibrary*/if(!glfwInit())return-1;/*CreateawindowedmodewindowanditsOpenGLcontext*/window=glfwCreateWindow(640,480,"......
  • opencv实现像素统计的示例代码
    在OpenCV中,统计图像的像素信息(如像素值分布、最大值、最小值、均值等)是常见的操作。以下是一些常用的方法和函数,用于统计图像的像素信息:统计像素值的基本信息最大值、最小值、均值、标准差:使用cv::minMaxLoc()和cv::meanStdDev()函数可以快速计算图像的最大值、最小值......
  • 【C++】开源:ImGui图形用户界面库配置与使用
    项目介绍项目Github地址:https://github.com/ocornut/imguiDearImGui(ImGui)是一个开源的、用C++编写的图形用户界面(GUI)库。它由OCornut创建,旨在为应用程序和工具提供创建用户界面的简单高效的方式。以下是DearImGui的一些主要特性和特点:1.即时模式GUI:ImGui遵循即......
  • Opencv 的下载安装和VisualStudio配置
    Opencv的下载安装和VisualStudio配置1opencv-windows的下载1.1github直接下载链接(需要外网链接)最新4.10.0版本的下载链接为:https://github.com/opencv/opencv/releases/download/4.10.0/opencv-4.10.0-windows.exe1.2官网下载其他版本官网链接:https://opencv.org/rele......
  • 装机重启后无法进入图形界面
    装机重启后无法进入图形界面Aproblemhasoccurredandthesystemcan'trecover.Pleaselogoutandtryagain.主要原因可能是安装的软件包未更新,更新即可(yumupdate)报错截图首先进入命令行界面并登录root账户Ctrl+Alt+F2联网对于rocky系统,查看网络设备:nmcli-t......
  • 【MATLAB】自学记录之基于某楼栋房价数据绘制三维网格图
    1.前言基于某小区某一楼栋各个户型及楼层之间对应的出售价格表,通过MATLAB脚本进行读取解析,并绘制成三维网格图,从而能够直观地以可视化的角度观察户型位置(东边户、西边户、中间连廊户)、楼层位置(高中低楼层)等因素是否与出售价格存在一定的影响关系。2.预置条件序号配置项......
  • OpenCV相机标定与3D重建(58)用于精细化优化由 cv::solvePnP 或 cv::solvePnPRansac 等
    操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:VisualStudioCode编程语言:C++11算法描述从3D-2D点对应关系出发,并基于一个初始解,精细化姿态(将物体坐标系中的3D点变换到相机坐标系的旋转和平移)。cv::solvePnPRefineVVS是OpenCV中用于精细化优化由cv::solvePnP或c......