1. 程式人生 > >openCV—Python(4)—— 基本繪圖

openCV—Python(4)—— 基本繪圖

一、函式簡介

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、隨機圓

這裡寫圖片描述