news 2026/4/16 10:16:58

【正点原子K210连载】第五十八章 image元素绘制实验 摘自【正点原子】DNK210使用指南-CanMV版指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【正点原子K210连载】第五十八章 image元素绘制实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第五十八章 image元素绘制实验

在前面的章节中已经陆续提到了image模块的一些基本使用,从本章开始将通过几个章节详细地介绍image模块的使用,本章将讲解image模块中的元素绘制。通过本章的学习,读者将学习到image模块中元素绘制的使用。
本章分为如下几个小节:
33.1 image模块绘制元素方法介绍
33.2 硬件设计
33.3 程序设计
33.4 运行验证

33.1 image模块绘制元素方法介绍
image模块是CanMV内置的模块,是一个用于处理图像的强大模块,可以用于图像元素绘制、图像滤波、图像特征检测、色块追踪、图像对比和码识别等。由于image模块功能强大,需要介绍的内容也比较多,因此本章仅介绍image模块中元素绘制的相关方法。
image模块为Image对象提供了clear()方法,用于使用颜色值为0的颜色填充整个图像,clear()方法如下所示:
image.clear()
clear()方法用于用颜色值为0的颜色填充整个图像,即用黑色填充整个图像。
clear()方法会返回经过处理的Image对象。
clear()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.clear()

image模块为Image对象提供了draw_line()方法,用于在图像上绘制一条线段,draw_line()方法如下所示:
image.draw_line(x0, y0, x1, y1, color=0xFFFF, thickness=1)
draw_line()方法用于在图像上绘制一条线段,可以指定线段起始和结束的坐标以及颜色、粗细等参数。
x0和y0指的是线段的起始X坐标和Y坐标。
x1和y1指的是线段的结束X坐标和Y坐标。
color指的是线段的颜色,默认为白色。
thickness指的是线段的粗细像素,默认为1个像素。
draw_line()方法会返回经过处理的Image对象。
draw_line()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_line(10,10,20,20,color=(255,0,0),thickness=2)

image模块为Image对象提供了draw_rectangle()方法,用于在图像上绘制一个矩形,draw_rectangle()方法如下所示:
image.draw_rectangle(x, y, w, h, color=0xFFFF, thickness=1, fill=False)
draw_rectangle()方法用于在图像上绘制一个矩形,可以指定矩形的左上角坐标以及宽度、高度、颜色、矩形框的粗细以及是否对矩形的内部进行颜色填充等参数。
x和y指的是矩形左上角的X坐标和Y坐标。
w和h指的是矩形的宽度和高度。
color指的是矩形的颜色,默认为白色。
thickness指的是矩形框的粗细像素,默认为1个像素。
fill指的是是否对矩形的内部进行颜色填充,若为False,则仅绘制一个矩形框,若为True,则会填充矩形框内部,默认为False。
draw_rectangle()方法会返回经过处理的Image对象。
draw_rectangle()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_rectangle(10,10,10,10,color=(0,255,0),thickness=2,fill=True)

image模块为Image对象提供了draw_circle()方法,用于在图像上绘制一个圆形,draw_circle()方法如下所示:
image.draw_circle(x, y, r, color=0xFFFF, thickness=1, fill=False)
draw_circle()方法用于在图像上绘制一个圆形,可以指定圆形的圆心坐标以及半径、颜色、圆形框的粗细以及是否对圆形的内部进行颜色填充等参数。
x和y指的是圆形圆心的X坐标和Y坐标。
r指的是圆形的半径。
color指的是圆形的颜色,默认为白色。
thickness指的是圆形框的粗细像素,默认为1个像素。
fill指的是是否对圆形的内部进行颜色填充,若为False,则仅绘制一个圆形框,若为True,则会填充圆形框内部,默认为False。
draw_circle()方法会返回经过处理的Image对象。
draw_circle()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_circle(10,10,10,color=(0,0,255),thickness=2,fill=True)

image模块为Image对象提供了draw_ellipse()方法,用于在图像上绘制一个椭圆形,draw_ellipse()方法如下所示:
image.draw_ellipse(cx, cy, rx, ry, rotation=0, color=0xFFFF, thickness=1, fill=False)
draw_ellipse()方法用于在图像上绘制一个椭圆形,可以指定椭圆形的圆心坐标以及X轴和Y轴方向上的半径、颜色、椭圆形框的粗细以及是否对椭圆形的内部进行颜色填充等参数。
cx和cy指的是椭圆形圆心的X坐标和Y坐标。
rx和xy指的是椭圆形在X轴以及Y轴方向上的半径长度。
rotation指的是算转的角度,单位为度。
color指的是椭圆形的颜色,默认为白色。
thickness指的是椭圆形框的粗细像素,默认为1个像素。
fill指的是是否对椭圆形的内部进行颜色填充,若为False,则仅绘制一个椭圆形框,若为True,则会填充椭圆形框内部,默认为False。
draw_ellipse()方法会返回经过处理的Image对象。
draw_ellipse()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_ellipse(10,10,10,5,rotation=30,color=(128,0,0),thickness=2,fill=True)

image模块为Image对象提供了draw_string()方法,用于在图像上绘制字符串,draw_string()方法如下所示:
image.draw_string(x, y, text, color=0xFFFF, scale=1.0, x_spacing=0, y_spacing=2, mono_space=0)
draw_string()方法用于在图像上绘制字符串,可以指定字符串的起始坐标、内容、颜色、缩放大小、字符间距以及是否使用固定字符宽度等参数。
x和y指的是字符串的起始X坐标和Y坐标。
text指的是字符串的内容,支持使用“\r”、“\n”等转义字符。
color指的是字符串的颜色,默认为白色。
scale指的是字符串的缩放大小,默认为1.0。
x_spacing和y_spacing指的是字符串中的字符间距和行间距,字符间距默认为0,行间距默认为2。
mono_space指的是是否固定字符宽度,当为1时,字符串中的每个字符都占用想用的字符宽度,当为0时,字符串中的每个字符根据其显示效果调整占用的宽度,在绘制大文本的时候,看起来会好很多,默认为0。
draw_string()方法会返回经过处理的Image对象。
draw_string()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_string(10,10,"Hello, DNK210!",color=(0,128,0),scale=1.5,x_spacing=1,y_spacing=0,mono_space=1)

image模块为Image对象提供了draw_cross()方法,用于在图像上绘制十字线,draw_cross()方法如下所示:
image.draw_cross(x, y, color=0xFFFF, size=5, thickness=1)
draw_cross()方法用于在图像上绘制十字线,可以指定十字线的坐标、颜色、大小和粗细等参数。
x和y指的是十字线中心的X坐标和Y坐标。
color指的是十字线的颜色,默认为白色。
size指的是十字线的延伸长度。
thickness指的是十字线的粗细像素,默认为1个像素。
draw_cross()方法会返回经过处理的Image对象。
draw_cross()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_cross(10,10,color=(0,0,128),size=8,thickness=2)

image模块为Image对象提供了draw_arrow()方法,用于在图像上绘制箭头,draw_arrow()方法如下所示:
image.arrow(x0, y0, x1, y1, color=0xFFFF, size=10, thickness=1)
draw_arrow()方法用于在图像上绘制箭头,可以指定箭头的起始和结束坐标、颜色、大小和粗细等参数。
x0和y0指的是箭头的起始X坐标和Y坐标。
x1和y1指的是箭头的结束X坐标和Y坐标。
color指的是箭头的颜色,默认为白色。
size指的是箭头的大小,默认为10。
thickness指的是箭头的粗细像素,默认为1个像素。
draw_arrow()方法会返回经过处理的Image对象。
draw_arrow()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.arrow(10,10,20,20,color=(255,255,0),size=8,thickness=2)

image模块为Image对象提供了draw_image()方法,用于在图像上绘制图像,draw_image()方法如下所示:
image.draw_image(image, x, y, x_scale=1.0, y_scale=1.0, alpha=256)
draw_image()方法用于在图像上图像,可以指定图像的绘制区域的起始坐标、缩放大小和透明度等参数。
image指的是需要绘制的Image对象。
x和y指的是被绘制图像绘制区域的左上角X坐标和Y坐标。
x_scale和y_scale指的是绘制图像在X和Y方向上的缩放,默认都为1.0。
alpha指的是绘制图像绘制的透明度,默认为256,即不透明。
draw_image()方法会返回经过处理的Image对象。
draw_image()方法的使用示例如下所示:

import image img=image.Image(size=(320,240))img.draw_image(img,0,0,x_scale=img.width()// 2, y_scale=img.height() // 2, alpha=200)

33.2 硬件设计
33.2.1 例程功能

  1. 获取摄像头输出的图像,并使用image模块在图像上绘制一些元素,后将图像显示在LCD上。
    33.2.2 硬件资源
    本章实验内容,主要讲解image模块的使用,无需关注硬件资源。
    33.2.3 原理图
    本章实验内容,主要讲解image模块的使用,无需关注原理图。
    33.3 程序设计
    33.3.1 image模块绘制元素方法介绍
    有关image模块绘制元素方法的介绍,请见第33.1小节《image模块绘制元素方法介绍》。
    33.3.2 程序流程图

图33.3.2.1 image元素绘制实验流程图
33.3.3 main.py代码
main.py中的脚本代码如下所示:

import lcd import sensor lcd.init()sensor.reset()sensor.set_framesize(sensor.QVGA)sensor.set_pixformat(sensor.RGB565)sensor.set_hmirror(False)whileTrue:img=sensor.snapshot()# 绘制线段 img.draw_line(10,20,30,20,color=(255,0,0),thickness=1)# 绘制矩形 img.draw_rectangle(10,50,20,20,color=(0,255,0),thickness=2,fill=False)# 绘制圆形 img.draw_circle(20,100,10,color=(0,0,255),thickness=1,fill=True)# 绘制椭圆形 img.draw_ellipse(20,140,20,10,rotation=45,color=(255,0,0),thickness=2,fill=False)# 绘制十字线 img.draw_cross(20,180,color=(0,255,0),size=10,thickness=1)# 绘制箭头 img.draw_arrow(10,220,30,220,color=(0,0,255),thickness=2)# 绘制字符串 img.draw_string(60,0," Hello\r\nDNK210",color=(255,0,0),scale=4.5)# 绘制图像 img.draw_image(img.copy(),img.width()// 2, img.height() // 2, x_scale=0.5, y_scale=0.5, alpha=200)lcd.display(img)

可以看到一开始是先初始化了LCD和摄像头。
接着在一个循环中不断地获取摄像头输出的图像,因为获取到的图像就是Image对象,因此可以直接调用image模块为Image对象提供的各种方法,然后就是在图像时绘制各种元素,最后在LCD显示处理好后的图像。
33.4 运行验证
将DNK210开发板连接CanMV IDE,点击CanMV IDE上的“开始(运行脚本)”按钮后,便了看到LCD上显示了绘制了各种元素的图像,如下图所示:

图33.4.1 LCD显示处理后的图像

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 5:39:31

[JDBC]批处理

一.codeimport org.junit.jupiter.api.Test;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement;public class TestBatch {Testpublic void test1()throws Exception{//没有用批处理的功能long start System.currentTimeMillis()…

作者头像 李华
网站建设 2026/4/16 10:16:56

计算机毕业设计springboot健康心理信息系统 基于Spring Boot的身心康护智慧服务平台 SpringBoot框架下的心灵健康数字化管理系统

计算机毕业设计springboot健康心理信息系统7toxp54r (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。近年来,随着社会竞争压力加剧与心理健康问题日益凸显&#xff0c…

作者头像 李华
网站建设 2026/4/14 16:39:52

LabVIEW条码追踪系统:一场代码与效率的优雅 dance

Labview条码追踪系统JKI AMC结合的框架,扩展性强,适用于各种项目在工业自动化和物流管理的舞台上,条码追踪系统正在上演一幕幕效率与精准并存的精彩演出。而在这场演出的背后,是LabVIEW这位重量级选手带来的技术支持。选择合适的开…

作者头像 李华
网站建设 2026/4/1 20:23:45

互联网大厂Java面试实战:Spring Boot、微服务与Kafka在电商场景中的应用

互联网大厂Java面试实战:Spring Boot、微服务与Kafka在电商场景中的应用 在互联网大厂的Java求职面试中,技术栈涵盖了Java SE、Spring Boot、微服务架构、Kafka消息队列等前沿技术。本文通过一个电商场景的面试故事,展现了严肃的面试官与搞笑…

作者头像 李华
网站建设 2026/4/11 0:50:38

基于大数据文化旅游信息公开管理平台的设计与实现

目录大数据文化旅游信息公开管理平台的设计与实现摘要项目技术支持可定制开发之功能亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作大数据文化旅游信息公开管理平台的设计与实现摘要 大数据技术的快速发展为文化旅游行业的信息化管理提…

作者头像 李华
网站建设 2026/4/14 23:40:28

学长亲荐!更贴合专科生的AI论文写作软件,千笔AI VS 灵感ai

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华