当前位置: 首页 > news >正文

机器视觉学习(十二)—— 绘制图形

目录

一、绘制函数参数说明

1.1 cv2.line()绘制直线

1.2 cv2.rectangle()绘制矩形

1.3 cv2.circle() 绘制圆形

1.4 cv2.ellipse()绘制椭圆

1.5 cv2.polylines()绘制多边形

1.6 cv2.putText() 绘制文字

二、绘制函数使用示例

2.1 在图像上绘制直线

2.2 在图像上绘制矩形

2.3 在图像上绘制圆形

2.4 在图像上绘制椭圆

三、绘制图形函数结合使用


在OpenCV中,我们可以使用几个函数来绘制不同类型的图形,例如直线、矩形、圆形和多边形。下面是几个常用的绘制函数:

一、绘制函数参数说明

1.1 cv2.line()绘制直线

线:              cv2.line(img, ps, pe, color, thickness)img:            要绘制形状的图片ps:             起点位置坐标pe:             终点位置坐标        color:          绘制的颜色thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

 

1.2 cv2.rectangle()绘制矩形

矩形:cv2.rectangle(img, ps, pe, color, thickness)img:            要绘制形状的图片ps:             起点位置坐标pe:             终点位置坐标        color:          绘制的颜色thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

1.3 cv2.circle() 绘制圆形

圆:              cv2.circle(img, center, radius, color, thickness)img:            要绘制形状的图片center:         圆心坐标radius:         圆的半径值color:          绘制的颜色thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

1.4 cv2.ellipse()绘制椭圆

椭圆:cv2.ellipse(image, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)image:          要绘制椭圆的图像center:         椭圆的中心坐标axes:           椭圆的半长轴和半短轴长度angle:          椭圆的旋转角度startAngle:     椭圆弧的起始角度endAngle:       椭圆弧的结束角度color:          椭圆的颜色,可以是RGB值或者一个单一的灰度值thickness:      椭圆的边界粗细,默认为1lineType:       椭圆的边界类型,默认为8连接线shift:          坐标的小数位数,默认为0

1.5 cv2.polylines()绘制多边形

多边形:cv2.polylines(img, pts, isClosed, color, thickness)img:           要绘制图形的图像pts:           多边形的顶点坐标列表isClosed:      指定是否闭合多边形(为True时闭合,为False时不闭合)color:         多边形的颜色(BGR格式)thickness:     多边形的边界线的粗细程度

1.6 cv2.putText() 绘制文字

添加文字:         cv2.putText(img, "text", org, fontface, fontscale, color, thickness)img:            要绘制形状的图片text:           文字内容org:            文字在图像中的左下角坐标fontFace:       字体类型,可选叁数有几种fontScale:      缩放比例,用该值乘以程序字体默认大小即为字体大小color:          绘制的颜色  (可以是一个颜色阈值)thickness:      线宽,默认为 1;对于矩形或者圆之类的封闭形状而言,传入 -1表示填充形状

二、绘制函数使用示例

2.1 在图像上绘制直线

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.line(image, (0, 0), (500, 500), (0, 255, 0), 3)  # 绘制一条绿色的直线cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.2 在图像上绘制矩形

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.rectangle(image, (100, 100), (400, 400), (0, 0, 255), 2)  # 绘制一个红色的矩形cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.3 在图像上绘制圆形

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.circle(image, (250, 250), 100, (255, 0, 0), -1)  # 绘制一个蓝色的填充圆cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2.4 在图像上绘制椭圆

import cv2
import numpy as npimage = np.zeros((500, 500, 3), np.uint8)  # 创建一个黑色的图像image = cv2.ellipse(image, (250, 250), (100, 200), 0, 0, 360, (255, 255, 0), -1)  # 绘制一个黄色的填充椭圆cv2.imshow("Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、绘制图形函数结合使用

示例:

import cv2 as cv
import numpy as npimg = np.zeros((480,480,3),np.uint8)                            # 初始化图像: np.zeros(length, width, 颜色通道数, np.uint8)        
img = cv.line(img,(0,0),(480,480),(0,0,255),5)                  # 画线: cv.line(img, 起点位置坐标, 终点位置坐标, color, 线宽)
img = cv.rectangle(img,(100,100),(300,300),(0,255,0),5)
img = cv.circle(img,(200,200),90,(255,0,0),5)                   # 画圆: cv.rectangle(img, ps, pe, color,传入 -1表示填充形状)
img = cv.putText(img,"xin",(100,90),cv.FONT_HERSHEY_SIMPLEX,1,(255,255,0),2)            # 添加文字      颜色通过BGR表达cv.imshow("img",img)
xin = cv.waitKey(0)
if xin == 27:cv.destroyAllWindows()

运行结果:

 

http://www.lryc.cn/news/334524.html

相关文章:

  • 软考信息处理技术员2024年5月报名流程及注意事项
  • linux:du和df区别
  • MacOS Docker 部署 Redis 数据库
  • 个推助力小米汽车APP实现智能用户触达,打造智能出行新体验
  • 科研 | SCI、SCIE、ESCI、JIF、IF、IEEE Fellow
  • 10倍提效!用ChatGPT编写系统功能文档。。。
  • 【Linux进阶之路】地址篇
  • 代码随想录第34天| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
  • Rust线程间通信通讯channel的理解和使用
  • Vue3组件基础示例
  • 如何使用PL/SQL Developer工具导出clob字段的表?
  • 蓝桥杯刷题 深度优先搜索-[NewOJ P1158]N皇后(C++)
  • python实例2.2:编写一个装饰器,计算任何一个函数执行的时间(详解及其知识点拓展)
  • Jenkins 持续集成 【CICD】
  • 【CHI】(十二)Memory Tagging
  • Vue - 你知道Vue组件之间是如何进行数据传递的吗
  • IP网络对讲广播系统审计
  • 蓝桥杯刷题--python38
  • 【LeetCode热题100】33. 搜索旋转排序数组(二分)
  • 基于Leaflet.js的Marker闪烁特效的实现-模拟预警
  • Vue-05
  • Mongodb中一个小巧的数据更新命令$inc
  • Java基于SpringBoot+Vue的专家医院预约挂号系统,附源码
  • STM32一个地址未对齐引起的 HardFault 异常
  • spring事务那些事
  • 设计模式深度解析:AI大模型下的策略模式与模板方法模式对比解析
  • 贪婪算法python实现
  • (一)基于IDEA的JAVA基础12
  • vue3中封装table表格
  • 【Redis】Redis的使用