screen.md 9.8 KB

圖形處理

螢幕

from cocopiPython import Screen

初始化

Screen()

創建畫布

create(w=320,h=240,bgColor=(0,0,0))

會返回一個 Image 物件,後續的繪製顯示操作都是Image物件的操作

參數說明

參數 描述
w 數字 畫布寬度,選填,默認為320
h 數位 畫布的高度,選填,默認為240
bgColor (r,g,b) 顏色,選填,默認為(0,0,0)

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(255,255,255)) # 創建畫布
while True:
    canvas.show(ver) # 顯示畫布

畫布顯示

from cocopiPython import Screen

canvas=Screen()

canvas.show(img,canvas_x=0,canvas_y=0)

參數說明

參數 描述
img 圖片 畫布物件,必填
canvas_x 數位 畫布起始點x軸坐標,選填,默認為0
canvas_y 數位 畫布起始點y軸坐標,選填,默認為0

清除畫布

Image.clear()

清除image.Image 物件內部的圖像資料,但不刪除物件。

繪製文字

在創建的畫布上面顯示文字,Image為圖像物件

Image.draw_string(x,y,text,scale,color,thickness)

參數說明

參數 描述
x 數值 起始點x軸坐標,必填
y 數值 起始點y軸坐標,必填
text 字串 要顯示的文本內容,必填
scale 大於0的整數或浮點值 字體大小,必填
color (r,g,b) 字體顏色,必填
thickness 大於0的整數 字體粗細,必填

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

while True:
    ver.draw_string(150,100, "你好", scale = 1, color = (255,255,255) , thickness = 1)
    ver.draw_string(120,120, "Hello World!", scale = 1, color = (255,255,255) , thickness = 1)
    canvas.show(ver) # 顯示畫布

繪製矩形

在創建的畫布上面繪製矩形,矩形分實心矩形和空心矩形

Image.draw_rectangle(x1,y1,x2,y2,color=(r,g,b),thickness=1)

參數說明

參數 描述
x1 數位 起點x軸坐標,必填
y1 數位 起點y軸坐標,必填
x2 數位 終點x軸坐標,必填
y2 數位 終點y軸坐標,必填
color (r,g,b) 矩形顏色,必填
thickness 整數 邊框線的粗細,空心矩形為正,實心矩形為負,必填

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

while True:
    ver.draw_rectangle(40,40, 280,200, (255,0,0),1) # 繪製空心矩形
    ver.draw_rectangle(70,70, 250,170, color=(255,255,0),thickness=-1) # 繪製實心矩形
    canvas.show(ver) # 顯示畫布

繪製直線

在圖像上繪製一條直線。

Image.draw_line(x1,y1,x2,y2,color=(r,g,b),thickness=1)

參數說明

參數 描述
x1 數位 起點x軸坐標,必填
y1 數位 起點y軸坐標,必填
x2 數位 終點x軸坐標,必填
y2 數位 終點y軸坐標,必填
color tuple 顏色,必填
thickness 整數 粗細,必填

樣例

在螢幕上繪製一條從(x1,y1)到(x2, y2)的直線

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

while True:
    ver.draw_line(40,40, 280,200, (255,0,0),2) 
    ver.draw_line(280,40, 40,200, color=(255,255,0),thickness=2) 
    canvas.show(ver) # 顯示畫布

绘制圆

在創建的畫布上面繪製圓形,圓形分實心和空心

Image.draw_circle(x, y, radius, color = (r, g, b), thickness = 1)

參數說明

參數 描述
x 數位 起始点x轴坐标,必填
y 數位 起始点y轴坐标,必填
radius 數位 半径,必填
color tuple 字体颜色,必填
thickness 1~3 線的粗細,必填

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

while True:
    ver.draw_circle(160,120, 100, color=(255, 0, 0), thickness=1)
    ver.draw_circle(160,120, 50, color=(255, 255, 0), thickness=-1)
    canvas.show(ver) # 顯示畫布

尺寸調整

Image.resize(w, h, padding = 0)

參數說明

將圖像調整至(w, h)大小,padding 默認會按比例縮放填充,而不是 CV 的拉伸圖像變形。

參數 描述
W 數位 新圖像的寬度
H 數位 新圖像的寬度
padding 數位 縮放比例

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

canvas.show(ver)
time.sleep(3)
ver = ver.resize(220, 220, padding = 0)
while True:
    canvas.show(ver)

圖片裁剪

裁剪圖片返回一張全新的圖片,返回Image 對象

Image.crop(x, y, w, h)

參數說明

參數 描述
x 數位 裁剪的起點的x軸坐標
y 數位 裁剪的起點的y軸坐標
w 數位 裁剪的寬度
h 數位 裁剪的高度

樣例

from cocopiPython import Screen

canvas=Screen() # 屏幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 创建画布
canvas.show(ver)
time.sleep(3)
ver = ver.crop(0,0,200,200)
while True:
    canvas.show(ver)

圖片旋轉

旋轉圖像到固定的角度,保持圖像的尺寸不變,返回 Image 物件,rotate為旋轉角度,正數時表示逆時針旋轉,負數時表示順時針旋轉

Image.rotate(rotate = 1)

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

canvas.show(ver)
time.sleep(3)
ver = ver.rotate(-50)
while True:
    canvas.show(ver)

圖片翻轉

沿著 x 或 y 軸進行翻轉圖像,保持圖像的尺寸不變,flip為1則水準翻轉,flip為0則垂直翻轉,返回一個Image物件

Image.flip(flip = 1)

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

while True:
    ver.clear()
    ver.draw_rectangle(80,80, 150,150, color=(255,0,0), thickness=1)
    ver.draw_string(100,100, "hello", scale = 1, color = (255,0,0) , thickness = 1)
    canvas.show(ver)
    time.sleep(3)
    ver = ver.flip(0) # 垂直
    canvas.show(ver)
    time.sleep(3)
    ver = ver.flip(1) # 水準
    canvas.show(ver)
    time.sleep(3)

圖片保存

將Image 對象保存成二進位檔案到本地

Image.save("./tmp.jpg")

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布

while True:
    ver.draw_string(150,100, "你好", scale = 1, color = (255,255,255) , thickness = 1)
    ver.draw_string(120,120, "Hello World!", scale = 1, color = (255,255,255) , thickness = 1)
    ver.save('/root/user/img/test.jpg')
    time.sleep(1)
    canvas.show(ver) # 顯示畫布

繪製圖片

將傳遞的img圖像畫在image.Image() 物件內部的圖像上, img只能傳遞image.Image()物件的圖像。會返回 Image 對象

Image.draw_image(img,0,0)

參數說明

參數 描述
img 圖片 打開的Image物件
x 數位 起始點x軸坐標
y 數位 起始點y軸坐標

樣例

from cocopiPython import Screen

canvas=Screen() # 螢幕初始化
ver = canvas.create(bgColor=(20,20,100)) # 創建畫布
while True:
    ver.draw_image((image.open("/root/user/img/test.jpg")),0,0) # 繪製圖像
    canvas.show(ver)

攝像頭

from cocopiPython import cameraPython

初始化

cameraPython()

獲取攝像頭圖像

capture()

同樣會返回一個 Image 物件,可以進行繪製操作。

樣例

from cocopiPython import cameraPython,Screen,WebPageTransmission

camera = cameraPython() # 攝像頭初始化
canvas = Screen() # 畫布初始化

while True:
    img = camera.capture() # 獲取攝像頭圖像
    img.draw_string(120,120, "Hello World!", scale = 1, color = (255,255,255) , thickness = 1)
    canvas.show(img) # 畫布顯示圖像

圖傳

from cocopiPython import ImageTransmission

初始化

ImageTransmission()

顯示

show(image)

參數說明

參數 描述
image 圖片 打開的Image物件

樣例

from cocopiPython import cameraPython,Screen,ImageTransmission

camera = cameraPython() # 攝像頭初始化
canvas = Screen()
imageTransmission = ImageTransmission() # 畫布圖像傳輸

while True:
    img = camera.capture() # 獲取攝像頭圖像
    imageTransmission.show(img) # 圖傳至電腦
    canvas.show(img) #螢幕顯示

循線

import cocopiPython

cocopiPython.lane_tracking(img,region1,region2)

參數說明

參數 描述
img 圖片 打開的Image物件,必填
region1 元組,(x,y,w,h) 左側檢測框的位置與大小,必填
region2 元組,(x,y,w,h) 右側檢測框的位置與大小,必填

樣例

import cocopiPython
from cocopiPython import cameraPython,Screen

camera = cameraPython() # 相機初始化
screen = Screen() # 螢幕初始化

while True:
    img = camera.capture()   # 獲取攝像頭圖像
    cocopiPython.lane_tracking(img,(10, 190,140, 20),(160, 190,140, 20))
    screen.show(img) # 畫布顯示圖像