首页 > 编程语言 >传统CV算法——基于Opencv的图像绘制

传统CV算法——基于Opencv的图像绘制

时间:2024-09-07 09:49:49浏览次数:13  
标签:img color cv2 thickness Opencv 算法 绘制 CV 255

直线绘制

参数解析:

  • (图像矩阵,直线起始坐标, 直线终止坐标、颜色、线条厚度)
    cv2.line()是OpenCV中用于绘制直线的函数。
    参数说明:
  • img:要绘制直线的图像矩阵。
  • (100,30):直线的起点坐标。
  • (210,180):直线的终点坐标。
  • color:直线的颜色,三个值分别表示蓝色、绿色和红色通道的强度。这里(0,0,255)表示纯蓝色。
  • thickness:直线的宽度。默认为1,如果设置为大于1的整数,将绘制实心直线。

以上参数可以根据需要调整,以绘制不同颜色、宽度和位置的直线。

import cv2
import numpy as np

img  = cv2.imread(r"./images/1.jpg")

cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)

cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

圆形绘制

  • 参数 (图像,圆心,半径,颜色,线条厚度)
    cv2.circle()是OpenCV库中用于绘制圆的函数,它可以在图像上绘制一个圆。

参数如下:

  • img:需要绘制圆的图像。
  • center:圆心的坐标,可以用一个元组(x,y)表示。
  • radius:圆的半径,以像素为单位。
  • color:圆的颜色,可以是一个元组(B,G,R)表示,或者是一个整数值,表示灰度值。
  • thickness:圆的边框线的粗细,如果为负值,表示圆填充颜色。
  • lineType:线的类型,可以是8常数代表8位连接,也可以是4常数代表4位连接。
  • shift:圆心坐标和半径的小数点位数。

注意:在绘制圆时,需要保证圆心坐标和半径都在图像范围内,否则可能会导致绘制失败。

import cv2
import numpy as np

img  = cv2.imread(r"./images/1.jpg")

# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)

cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

矩形绘制

  • 参数(图像,左上角坐标,右下角坐标,颜色,线条厚度)
    cv2.rectangle函数是OpenCV中用于绘制矩形的函数。以下是cv2.rectangle函数的参数说明:

  • image:要绘制矩形的图像。这个参数必须是一个NumPy数组,即一个图像。

  • pt1:矩形的左上角顶点坐标。可以通过一个元组或一个列表来指定。例如(10, 10)或 [10, 10]。

  • pt2:矩形的右下角顶点坐标。同样可以通过一个元组或一个列表来指定。

  • color:矩形的颜色。可以是一个整数或一个元组。如果是一个整数,它代表了灰度值。如果是一个元组,它代表了RGB值。

  • thickness:矩形的边框线的宽度。默认值为1,表示绘制一个实心矩形。

  • lineType:矩形边框线的类型。默认值为cv2.LINE_8,表示8邻域连接。

  • shift:坐标点的小数点位数。默认值为0,表示坐标点的小数点位数为0。

cv2.rectangle函数可以用于绘制矩形的轮廓线,也可以用于填充矩形的颜色。

import cv2
import numpy as np

img  = cv2.imread(r"./images/1.jpg")

# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)

cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

椭圆型绘制

  • image:它是要在其上绘制椭圆的图像。

centerCoordinates:它是椭圆的中心坐标。坐标表示为两个值的元组,即(X坐标值,Y坐标值)。
axesLength:它包含两个变量的元组,分别包含椭圆的长轴和短轴(长轴长度,短轴长度)。
angle:椭圆旋转角度,以度为单位。
startAngle:椭圆弧的起始角度,以度为单位。
endAngle:椭圆弧的终止角度,以度为单位。
color:它是要绘制的形状边界线的颜色。对于BGR,我们通过一个元组。例如:(255,0,0)为蓝色。
thickness:是形状边界线的粗细像素。厚度-1像素将用指定的颜色填充形状。
lineType:这是一个可选参数,它给出了椭圆边界的类型。
shift:这是一个可选参数。它表示中心坐标中的小数位数和轴的值。

import cv2
import numpy as np

img  = cv2.imread(r"./images/1.jpg")

# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
# cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)
cv2.ellipse(img,center=(100,100),axes=(100,50),angle=0,startAngle=0,endAngle=360,color=(255,0,0),thickness=2)
cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

自定义形状

  • 多边形,isClosed 代表是否是封闭
    cv2.polylines函数用于绘制多边形线条。它的参数如下:

image: 要绘制线条的图像。
pts: 一个由多个多边形点的列表组成的列表,每个多边形点由(x, y)坐标表示。
isClosed: 一个布尔值,指示多边形是否是闭合的。如果为True,函数将在绘制最后一个点和第一个点之间绘制一条线条来闭合多边形。
color: 线条的颜色,可以是一个整数列表表示RGB颜色,或者可以是一个名为cv2.COLOR_*的预定义常量。
thickness: 线条的粗细,以像素为单位。
lineType: 线条的类型,可以是cv2.LINE_*的预定义常量。
shift: 点坐标的小数位数。

注意:pts参数必须是一个整数类型的数组,所以需要使用np.int32()函数将坐标数组中的元素转换为整数。

import cv2
import numpy as np

img  = cv2.imread(r"./images/1.jpg")

# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
# cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.ellipse(img,center=(100,100),axes=(100,50),angle=0,startAngle=0,endAngle=360,color=(255,0,0),thickness=2)
pts = np.array([[10,5],[50,10],[70,20],[20,30]],dtype=np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],isClosed=True,color=(0,0,255),thickness=2)

cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

绘制文本

cv2.putText()是OpenCV中用于在图像上绘制文字的函数。它有以下几个参数:

  1. img:需要绘制文字的图像。

  2. text:要绘制的文本内容。

  3. org:绘制文本的起始位置,是一个包含两个元素的元组,如(x, y)。

  4. fontFace:文本字体的类型,可以是预定义的字体类型(如cv2.FONT_HERSHEY_SIMPLEX,cv2.FONT_HERSHEY_PLAIN等),也可以是自定义的字体,使用字体文件的路径。

  5. fontScale:字体的缩放比例。

  6. color:文本的颜色,是一个包含三个元素的元组,表示B、G、R三个分量的值。

  7. thickness:文本的粗细线宽。

  8. lineType:线条的类型,可以是cv2.LINE_AA(抗锯齿线条)或cv2.LINE_8(8连接线条)。

  9. bottomLeftOrigin:一个布尔值,用于指定文本坐标相对于绘制原点的位置。如果为True,则文本坐标相对于图像的左下角;如果为False,则文本坐标相对于图像的左上角。

调用cv2.putText()函数后,会在指定的图像上绘制出文本。

import cv2
import numpy as np

img  = cv2.imread(r"./images/1.jpg")

# cv2.line(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.circle(img,center=(50,50),radius=30,color=(0,0,255),thickness=2)
# cv2.rectangle(img,(100,30),(210,180),color=(0,0,255),thickness=2)
# cv2.ellipse(img,center=(100,100),axes=(100,50),angle=0,startAngle=0,endAngle=360,color=(255,0,0),thickness=2)
# pts = np.array([[10,5],[50,10],[70,20],[20,30]],dtype=np.int32)
# pts = pts.reshape((-1,1,2))
# cv2.polylines(img,[pts],isClosed=True,color=(0,0,255),thickness=2)

cv2.putText(img,"gril",(10,30),cv2.FONT_HERSHEY_SIMPLEX,fontScale=1,color=(0,0,255),thickness=1,lineType=cv2.LINE_AA)

cv2.imshow("pic show",img)
cv2.waitKey(0)

在这里插入图片描述

其他类型

ellipse():用于绘制椭圆或圆形的函数。它接受四个参数:(x, y, width, height)。其中,x和y是椭圆中心的坐标,width和height分别是椭圆的宽度和高度。

arc():用于绘制弧线的函数。它接受六个参数:(x, y, width, height, start, stop)。其中,x和y是弧线的中心坐标,width和height分别是弧线的宽度和高度,start和stop是弧线的起始角度和终止角度。

triangle():用于绘制三角形的函数。它接受六个参数:(x1, y1, x2, y2, x3, y3)。其中,(x1, y1),(x2, y2),(x3, y3)是三个顶点的坐标。

rect():用于绘制矩形的函数。它接受四个参数:(x, y, width, height)。其中,x和y是矩形的左上角坐标,width和height分别是矩形的宽度和高度。

quad():用于绘制四边形的函数。它接受八个参数:(x1, y1, x2, y2, x3, y3, x4, y4)。其中,(x1, y1),(x2, y2),(x3, y3),(x4, y4)是四个顶点的坐标。

标签:img,color,cv2,thickness,Opencv,算法,绘制,CV,255
From: https://blog.csdn.net/weixin_42917352/article/details/118711892

相关文章

  • 利用AI大语言模型和Langchain开发智能车算法训练知识库(上篇)
    今天小李哥将介绍亚马逊云科技的JupyterNotebook机器学习托管服务AmazonSageMaker上,通过AI大语言模型、向量知识库和LangChainAgent,创建用于AI智能车模型训练的RAG问答知识库。整个项目的架构图如下:本系列共分为上下两篇。在上篇内容中,我将分享该知识库的GitHub项目开源代......
  • 代码随想录算法训练营第五十天 | 98. 所有可达路径
    目录98.所有可达路径思路图的存储邻接矩阵         邻接表深度优先搜索1.确认递归函数,参数2.确认终止条件3.处理目前搜索节点出发的路径方法一:邻接矩阵写法方法二:邻接表写法98.所有可达路径题目链接:卡码网题目链接(ACM模式)文章讲解:代码随想录 ......
  • 最近邻回归算法原理及Python实践
    最近邻回归算法(K-nearestneighborsregression,简称KNN回归)是一种简单而又直观的非参数回归方法。它基于这样一个思想:一个样本的输出值可以通过其最近的K个邻居的输出值的某种形式(如加权平均)来预测。以下是KNN回归算法的主要原理:一、基本步骤计算距离:对于给定的预测样本......
  • 决策树回归算法原理及Python实践
    决策树回归算法(DecisionTreeRegression)是一种常用的机器学习算法,用于预测连续型变量的取值。其原理基于树结构对数据进行建模和预测,通过将数据集划分为不同的区域,并在每个区域内预测一个常数值来实现回归任务。以下是决策树回归算法原理的详细解释:一、基本原理树结构:......
  • 【数据结构和算法实践-位运算-找出数组中出现K次的数,其他数出现M次】
    位运算-找出数组中出现K次的数,其他数出现M次题目MyThought代码示例JAVA-8题目一个数组中,一个数出现了K次,另外其他的数出现了M次,找出出现K次的数MyThought一、设置一个长度为32的int[]temp,把arr中的每个数都变成2进制,放入temp中1、设置长度为32的int数组2......
  • 数据结构与算法 第10天(图的应用)
    一、最小生成树生成树:所有顶点均由边连接在一起,但不存在回路一个图可以有多颗不同的生成树 生成树特点:生成树的顶点个数与图的顶点个数相同;生成树是图的极小连通子图,去掉一条边则非连通,一个有n个顶点的连通图的生成树有n-1条边;在生成树中再加一条边必然形成回路,......
  • 828华为云征文|华为云Flexus X实例部署安装HivisionIDPhoto一个轻量级的AI证件照制作算
    背景最近有一个开源项目非常火,就是HivisionIDPhotos一个轻量级的AI证件照制作算法github仓库https://github.com/Zeyi-Lin/HivisionIDPhotos由于最近华为云最近正在举办B2B企业节,FlexusX实例的促销力度非常大。所以购买了一个FlexusX实例。4核12G。准备安装一个,试一......
  • 识别并应对动态归纳类算法题:深入剖析与实战指南
    《识别并应对动态归纳类算法题:深入剖析与实战指南》在编程的世界里,算法题犹如一座座充满挑战的山峰,等待着开发者们去攀登。其中,动态归纳类算法题因其复杂性和灵活性,常常成为开发者们进阶路上的一道难关。本文将深入探讨如何识别并应对动态归纳类算法题,为大家提供一份全面的......
  • 72. 编辑距离算法实现详解
    LeetCode72.编辑距离详解一、题目描述给你两个单词word1和word2,请返回将word1转换成word2所使用的最少操作数。你可以对一个单词进行如下三种操作:插入一个字符。删除一个字符。替换一个字符。示例1:输入:word1="horse",word2="ros"输出:3解释:horse......
  • DFS算法专题(一)——二叉树中的深搜【回溯与剪枝的初步注入】
    目录1、DFS算法简介2、算法实战应用【leetcode】2.1计算布尔二叉树的值2.1.1算法原理 2.1.2算法代码2.2求根节点到叶节点数字之和  2.2.1算法原理​2.2.2算法代码2.3二叉树剪枝2.3.1算法原理2.3.2算法代码2.4验证二叉搜索树 2.4.1算法原理 2.4.2......