openCV—Python(4)—— 基本绘图

博客介绍了几个绘图相关函数,包括构造全0矩阵的zeros函数,以及画线、矩形、圆形的line、rectangle、circle函数,还有产生随机整数的randint函数,并给出了各函数的原型和参数说明。此外,还进行了画绿线、红线、矩形、同心圆、随机圆等实例演练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、函数简介

1、zeros—构造全0矩阵

函数原型:zeros(shape, dtype=None, order=’C’)

shape:矩阵大小;例如:300x300;

dtype:数据类型;例如:”uint8”

order:数据排列顺序,默认按列排的

2、line—画线

函数原型:line(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

img:在img上绘图;

pt1:起点;例如:(0,0)

pt2:终点;例如:(300,300)

color:线的颜色;例如:(0,255,0)(绿色)

thickness:线的粗细程度,例如:-1,1,2,3…

其它参数默认即可。

3、rectangle—画矩形

函数原型:rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

img:在img上绘图;

pt1:起点;例如:(0,0)

pt2:终点;例如:(300,300)

color:线的颜色;例如:(0,255,0)(绿色)

thickness:线的粗细程度,例如:-1,1,2,3…

其它参数默认即可。

4、circle—画圆形

函数原型:circle(img, center, radius, color, thickness=None, lineType=None, shift=None)

img:在img上绘图;

center:圆心;例如:(0,0)

radius:半径;例如:20

color:线的颜色;例如:(0,255,0)(绿色)

thickness:线的粗细程度,例如:-1,1,2,3…

其它参数默认即可。

5、randint—产生[low,high)中的随机整数

函数原型:randint(low, high=None, size=None)

low:区间下界;例如:0

high:区间上界;例如:256

size:个数;例如:size = (2,),产生2个随机整数

二、 实例演练

1、画一条绿线

2、画一条红线

3、画一个绿色矩形

4、画一个红色矩形

5、画一个蓝色矩形

6、画同心圆

7、随机画圆

#encoding:utf-8

#
#基本绘图
#

import numpy as np
import cv2
canvas = np.zeros((300,300,3),dtype="uint8")
#画绿线
green = (0,255,0)
cv2.line(canvas,(0,0),(300,300),green,2)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
#画红线
red = (0,0,255)
cv2.line(canvas,(300,0),(0,300),red,3)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
#画绿色矩形
cv2.rectangle(canvas,(10,10),(60,60),green)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
#画红色矩形
cv2.rectangle(canvas,(50,200),(200,225),red,5)
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
#画蓝色矩形
blue = (255,0,0,)
cv2.rectangle(canvas,(200,50),(225,125),blue,-1)#-1表示实心
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
#画圆1——有规律的画圆
canvas = np.zeros((300,300,3),dtype="uint8")#重新初始化变量canvas(三维的矩阵)
(centerX,centerY) = (canvas.shape[1] / 2,canvas.shape[0] / 2)#获取图像中心
white = (255,255,255)#设置白色变量
for r in xrange(0,175,25):
    cv2.circle(canvas,(centerX,centerY),r,white)#circle(图像,圆心,半径,颜色)

cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
#画圆2——随机画圆
for i in xrange(0,25):
    radius = np.random.randint(5,high = 200)#生成1个[5,200)的随机数
    color = np.random.randint(0,high = 256,size = (3,)).tolist()#生成3个[0,256)的随机数
    pt = np.random.randint(0,high = 300,size = (2,))#生成2个[0,300)的随机数
    cv2.circle(canvas,tuple(pt),radius,color,-1)#画圆
cv2.imshow("Canvas",canvas)
cv2.waitKey(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

结果如下:

1、绿线

这里写图片描述

2、红线

这里写图片描述

3、绿色矩形

这里写图片描述

4、红色矩形

这里写图片描述

5、蓝色矩形

这里写图片描述

6、同心圆

这里写图片描述

7、随机圆

这里写图片描述

### 使用 OpenCV-Python 进行特征点检测 为了使用 OpenCV-Python 检测图像中的特征点,可以采用多种算法实现这一目标。常见的方法包括 SIFT(尺度不变特征变换)、SURF(加速稳健特征)和 ORB(Oriented FAST and Rotated BRIEF)。由于专利原因,在较新的版本中默认不再支持SIFT 和 SURF 的直接调用,但可以通过 `cv2.xfeatures2d` 或者安装额外库来启用这些功能。 对于ORB 特征点检测器来说,其不仅能够快速提取大量稳定的角点位置而且计算效率高适合实时应用场合。下面给出一段基于ORB算法的Python代码片段用于展示如何利用OpenCV执行特征点匹配任务: ```python import numpy as np import cv2 # 初始化ORB检测器对象 orb = cv2.ORB_create() # 读入待处理图片并转成灰度图形式 img = cv2.imread('example.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 寻找关键点与描述符 keypoints, descriptors = orb.detectAndCompute(gray, None) # 绘制带有尺寸信息的关键点到原图上 output_img = cv2.drawKeypoints( img, keypoints, outImage=None, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS ) # 展示含有标注后的结果窗口 cv2.imshow("Feature Points Detected by ORB", output_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 上述程序首先初始化了一个ORB类型的特征探测器实例[^1];接着加载了一张名为 'example.jpg' 的测试照片,并将其颜色空间由RGB转换成了单通道灰阶模式以便后续运算简化;之后通过调用 `.detectAndCompute()` 函数获取到了该幅影像内部所有的显著性局部结构及其对应的向量表达方式——即所谓的“描述子”。最后一步则是借助内置绘图工具将识别出来的兴趣点直观地标记出来供观察分析之用[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值