# 图形处理 ## 屏幕 ```python from cocopiPython import Screen ``` ### 初始化 ```python Screen() ``` ### 创建画布 ```python create(w=320,h=240,bgColor=(0,0,0)) ``` 会返回一个 Image 对象,后续的绘制显示操作都是Image对象的操作 ### 参数说明 | 参数 |类型 |说明 | | --- | --- | --- | | w | int | 画布宽度,选填,默认为320 | | h | int | 画布高度,选填,默认为240 | | bgColor | tuple | 画布背景颜色,选填,默认为(0,0,0) | ### 样例 ```python from cocopiPython import Screen canvas=Screen() # 屏幕初始化 ver = canvas.create(bgColor=(255,255,255)) # 创建画布 while True: canvas.show(ver) # 显示画布 ``` ### 画布显示 ```python 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 | ### 清除画布 ```python Image.clear() ``` 清除image.Image 对象内部的图像数据,但不删除对象。 ### 绘制文字 在创建的画布上面显示文字,Image为图像对象 ```python 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 | ### 样例 ```python 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) # 显示画布 ``` ### 绘制矩形 在创建的画布上面绘制矩形,矩形分实心矩形和空心矩形 ```python 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 | 边框线的粗细,空心矩形为正,实心矩形为负,必填 | ### 样例 ```python 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) # 显示画布 ``` ### 绘制直线 在创建的画布上面绘制直线 ```python 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)的直线 ```python 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) # 显示画布 ``` ### 绘制圆 在创建的画布上面绘制圆形,圆形分实心和空心 ```python 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 | ### 样例 ```python 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) # 显示画布 ``` ### 尺寸调整 ```python Image.resize(w, h, padding = 0) ``` ### 参数说明 将图像调整至(w, h)大小,padding 默认会按比例缩放填充,而不是 CV 的拉伸图像变形。 | 参数 |类型 |说明 | | --- | --- | --- | | W | int | 新图像的宽度 | | H | int | 新图像的宽度 | | padding | int | 缩放比例 | ### 样例 ```python 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 对象 ```python Image.crop(x, y, w, h) ``` ### 参数说明 | 参数 |类型 |说明 | | --- | --- | --- | | x | int | 裁剪的起点的x轴坐标 | | y | int | 裁剪的起点的y轴坐标 | | w | int | 裁剪的宽度 | | h | int | 裁剪的高度 | ### 样例 ```python 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为旋转角度,正数时表示逆时针旋转,负数时表示顺时针旋转 ```python Image.rotate(rotate = 1) ``` ### 样例 ```python 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对象 ```python Image.flip(flip = 1) ``` ### 样例 ```python 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对象 ```python Image.save("./tmp.jpg") ``` ### 样例 ```python 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 对象 ```python Image.draw_image(img,0,0) ``` ### 参数说明 | 参数 |类型 |说明 | | --- | --- | --- | | img | image.Image() | 打开的Image对象 | | x | int | 起始点x轴坐标 | | y | int | 起始点y轴坐标 | ### 样例 ```python 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) ``` ## 摄像头 ```python from cocopiPython import cameraPython ``` ### 摄像头初始化 ```python cameraPython() ``` ### 获取摄像头图像 ```python capture() ``` 同样会返回一个 Image 对象,可以进行绘制操作。 ### 样例 ```python 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) # 画布显示图像 ``` ## 图传 ```python from cocopiPython import ImageTransmission ``` ### 初始化 ```python ImageTransmission() ``` ### 显示 ```python show(image) ``` ### 参数说明 | 参数 | 类型 | 描述 | | --- | --- | --- | | image | image.Image() | 图像 | ### 样例 ```python from cocopiPython import cameraPython,Screen,ImageTransmission camera = cameraPython() # 摄像头初始化 canvas = Screen() imageTransmission = ImageTransmission() # 画布图像传输 while True: img = camera.capture() # 获取摄像头图像 imageTransmission.show(img) # 图传至电脑 canvas.show(img) #屏幕显示 ``` ## 循线 ```python import cocopiPython cocopiPython.lane_tracking(img,region1,region2) ``` ### 参数说明 |参数|类型|说明| |:---|:---|:---| |img|image.Image()|输入图像,必填| |region1|元组,(x,y,w,h)|左侧检测框的位置与大小,必填| |region2|元组,(x,y,w,h)|右侧检测框的位置与大小,必填| ### 样例 ```python 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) ```