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

1、函数简介

一、zeros—构造全0矩阵

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

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

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

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

二、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…

其它参数默认便可。

三、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…

其它参数默认便可。

四、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…

其它参数默认便可。

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

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

low:区间下界;例如:0

high:区间上界;例如:256

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

2、 实例演练

一、画一条绿线

二、画一条红线

三、画一个绿色矩形

四、画一个红色矩形

五、画一个蓝色矩形

六、画同心圆

七、随机画圆

#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)

结果以下:canvas

一、绿线

这里写图片描述

二、红线

这里写图片描述

三、绿色矩形

这里写图片描述

四、红色矩形

这里写图片描述

五、蓝色矩形

这里写图片描述

六、同心圆

这里写图片描述

七、随机圆

这里写图片描述