screen.md 9.7 KB

图形处理

屏幕

from cocopiPython import Screen

初始化

Screen()

创建画布

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

会返回一个 Image 对象,后续的绘制显示操作都是Image对象的操作

参数说明

参数 类型 说明
w int 画布宽度,选填,默认为320
h int 画布高度,选填,默认为240
bgColor tuple 画布背景颜色,选填,默认为(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 object 画布对象,必填
canvas_x int 画布起始点x轴坐标,选填,默认为0
canvas_y int 画布起始点y轴坐标,选填,默认为0

清除画布

Image.clear()

清除image.Image 对象内部的图像数据,但不删除对象。

绘制文字

在创建的画布上面显示文字,Image为图像对象

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

参数说明

参数 类型 说明
x int 起始点x轴坐标,必填
y int 起始点y轴坐标,必填
text string 要显示的文本内容,必填
scale float 文字大小,选填,默认为1
color tuple 字体颜色,必填
thickness int 文字粗细,选填,默认为1

样例

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 int 起始点x轴坐标,必填
y1 int 起始点y轴坐标,必填
x2 int 终点x轴坐标,必填
y2 int 终点y轴坐标,必填
color tuple 字体颜色,必填
thickness int 边框线的粗细,空心矩形为正,实心矩形为负,必填

样例

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 int 起始点x轴坐标,必填
y1 int 起始点y轴坐标,必填
x2 int 终点x轴坐标,必填
y2 int 终点y轴坐标,必填
color tuple 字体颜色,必填
thickness int 粗细,必填

样例

在屏幕上绘制一条从(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 int 起始点x轴坐标,必填
y int 起始点y轴坐标,必填
radius int 半径,必填
color tuple 字体颜色,必填
thickness int 线的粗细,必填 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 int 新图像的宽度
H int 新图像的宽度
padding int 缩放比例

样例

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)

图片裁剪

别名为 cut 函数接口。 裁剪图片返回一张全新的图片 x, y, w, h裁剪图像的位置和大小 返回 Image 对象

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

参数说明

参数 类型 说明
x int 裁剪的起点的x轴坐标
y int 裁剪的起点的y轴坐标
w int 裁剪的宽度
h int 裁剪的高度

样例

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.Image() 打开的Image对象
x int 起始点x轴坐标
y int 起始点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.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.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)