87|0

503

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【嘉楠K230开发板】摄像头显示与画图 [复制链接]

 

      本篇讲述摄像头使用显示及简单的画图。

一.原理了解

      K230 具备 3 路 MIPI-CSI 输入(3x2 lane/1x4+1x2 lane),最多可连接 3 路摄像头,每路摄像头支持输出 3 个通道,提供不同的分辨率和图像格式。开发板CSI2上已配有GC2093摄像头,查阅资料是支持200W像素(1920*1080),60fps。摄像头接口原理如下

      关于K230显示,官网也做了些讲解。K230 配备 1 路 MIPI-DSI(1x4 lane),可驱动 MIPI 屏幕或通过接口芯片转换驱动 HDMI 显示器及支持虚拟IDE缓冲区显示。这里用于方便调试,选择支持虚拟IDE缓冲区显示。三者特点这里也了解下。

●MIPI显示屏:外接01Studio 3.5寸MiPi显示屏,可以一体化组装,适合离线部署调试使用。最大支持800x480分辨率。

●HDMI:外接HDMI显示屏,清晰度最高。最大支持1920x1080分辨率。

●IDE缓冲区显示:性价比最高,图像质量有一定下降,但能满足大部分场合调试使用。最大支持1920x1080分辨率。

二.代码准备

1.首先了解下摄像头及Display API使用函数及编码流程。

sensor.reset() ---复位和初始化摄像头。

sensor.set_framesize---设置每个通道的图像输出尺寸

sensor.set_pixformat---设置图像像素格式

sensor.set_hmirror---设置摄像头画面水平镜像

sensor.set_vflip---设置摄像头画面垂直翻转

 

Display.init---初始化Display模块

Display.deinit()---注销Display模块

2.关于画图API使用

sensor.snapshot()---通过摄像头拍摄方式返回image对象

image.Image---通过读取图片方式创建image对象

image.draw_line---画线段

image.draw_rectangle---画矩形

image.draw_circle---画圆

image.draw_arrow---画箭头

image.draw_cross---画十字交叉

image.draw_string---写字符

image.draw_string_advanced---写字符,支持中文。 这里实测“楠”字显示不出来。

3.代码编写

      了解上面的API函数及构建流程,下面代码实现摄像头显示与画图功能。

'''
#1.实现摄像头图像采集显示
#2.画图
'''

import time, os, sys

from media.sensor import * #导入sensor模块,使用摄像头相关接口
from media.display import * #导入display模块,使用display相关接口
from media.media import * #导入media模块,使用meida相关接口

sensor = Sensor() #构建摄像头对象
sensor.reset() #复位和初始化摄像头
sensor.set_framesize(Sensor.FHD) #设置帧大小FHD(1920x1080),默认通道0
sensor.set_pixformat(Sensor.RGB565) #设置输出图像格式,默认通道0
print(sensor.width(), sensor.height())
#使用IDE缓冲区输出图像,显示尺寸和sensor配置一致。
Display.init(Display.VIRT, sensor.width(), sensor.height())

MediaManager.init() #初始化media资源管理器

sensor.run() #启动sensor

clock = time.clock()

while True:
    clock.tick()

    '''摄像头图像采集显示'''
    img = sensor.snapshot() #拍摄一张图
#    Display.show_image(img) #显示图片

    '''画图'''
    # 画线段:从 x0, y0 到 x1, y1 坐标的线段,颜色红色,线宽度 2。
    img.draw_line(20, 220, 100, 220, color = (255, 0, 0), thickness = 2)

    #画矩形:绿色不填充。
    img.draw_rectangle(150, 150, 200, 240, color = (0, 255, 0), thickness = 2, fill = False)

    #画圆:蓝色不填充。
    img.draw_circle(60, 320, 50, color = (0, 0, 255), thickness = 5, fill = False)

    #画箭头:白色。
    img.draw_arrow(150, 120, 250, 120, color = (255, 0, 255), size = 20, thickness = 5)

    #画十字交叉。
    img.draw_cross(60, 120, color = (0, 255, 255), size = 20, thickness = 2)

    #写字符。
    #img.draw_string(150, 200, "Hello 01Studio!", color = (255, 255, 255), scale = 4, mono_space = False)

    #写字符,支持中文。
    img.draw_string_advanced(100, 400, 50, "EEWorld & 01Studio", color = (255, 0, 255))
    img.draw_string_advanced(100, 500, 50, "K230开发板", color = (255, 255, 0))
    img.draw_string_advanced(100, 600, 66, "祝2025蛇年新春快乐", color = (255, 0, 0))

    Display.show_image(img)

    print(clock.fps()) #打印FPS

 

三.调试测验

      IDE运行,帧缓冲区点选“缩放”,可以看到显示摄像头画面,以及画图,效果如下,可以看到帧率在45fps左右,动态显示视频,画图也是按设计显现。

 

      至此,实现摄像头显示与画图功能。

 

点赞 关注
个人签名

保持热爱

 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表