首页 > 其他分享 >《DNK210使用指南 -CanMV版 V1.0》第二十七章 摄像头图像调整实验

《DNK210使用指南 -CanMV版 V1.0》第二十七章 摄像头图像调整实验

时间:2024-09-28 14:22:58浏览次数:1  
标签:输出 画面 V1.0 LCD CanMV GPIO 使用指南 sensor 摄像头

第二十七章 摄像头图像调整实验

1)实验平台:正点原子DNK210开发板

2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0

3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750

4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)正点原子K210技术交流企鹅群:605557868

在上一章中,介绍了如何在CanMV下配置摄像头输出特定大小和格式的画面,并获取摄像头输出的图像数据将其在LCD上进行显示,。通过本章的学习,读者将学习到在CanMV下驱动配置摄像头调整输出图像的对比度、亮度和饱和度等画面参数。
本章分为如下几个小节:
27.1 sensor模块介绍
27.2 硬件设计
27.3 程序设计
27.4 运行验证

27.1 sensor模块介绍
有关sensor模块的介绍,请见第26.1小节《sensor模块介绍》。

27.2 硬件设计
27.2.1 例程功能

  1. 实时捕获摄像头输出的图像数据,并在LCD上进行显示
  2. 当KEY0按键被按下时,配置摄像头输出画面的对比度,对比度的值在2和-2之间切换
  3. 当KEY1按键被按下时,配置摄像头输出画面的亮度,亮度的值在2和-2之间切换
  4. 当KEY2按键被按下时,配置摄像头输出画面的饱和度,饱和度的值在2和-2之间切换

27.2.2 硬件资源

  1. 摄像头
    SCCB_SDA- IO40
    SCCB_SCL- IO41
    DVP_RESET- IO42
    DVP_VSYNC- IO43
    DVP_PWDN- IO44
    DVP_HREF- IO45
    DVP_XCLK- IO46
    DVP_PCLK- IO47
    D0~D7- DVP_D0~DVP_D7
  2. LCD
    LCD_RD- IO34
    LCD_BL- IO35
    LCD_CS- IO36
    LCD_RST- IO37
    LCD_RS- IO38
    LCD_WR- IO39
    LCD_D0~LCD_D7- SPI0_D0~SPI0_D7

27.2.3 原理图
本章实验内容,需要使用到板载的摄像头接口,在正点原子DNK210开发板上有两处摄像头接口分别为位于正点原子DNK210开发板底板上的ATK-MC2640摄像头模块接口,该接口用于连接正点原子的ATK-MC2640模块,另一个摄像头接口位于正点原子CNK210F核心板,该接口同于直接连接OV2640等摄像头模组,但需要特别注意的是,这两个摄像头接口不能同时使用,否则可能导致硬件损坏。
正点原子DNK210开发板上的ATK-MC2640摄像头模块接口的连接原理图,如下图所示:


图27.2.3.1ATK-MC2640摄像头模块接口原理图

正点原子CNK210F核心板上的OV2640等摄像头模组接口的连接原理图,如下图所示:


图27.2.3.2OV2640等摄像头模组接口原理图

27.3 程序设计
27.3.1 sensor模块
有关sensor模块的介绍,请见第27.1小节《sensor模块介绍》。

27.3.2 程序流程图


图27.3.2.1 摄像头图像调整实验流程图

27.3.3 main.py代码
main.py中的脚本代码如下所示:

from board import board_info
from fpioa_manager import fm
from maix import GPIO
import time
import lcd
import sensor
# 为IO分配相应的硬件功能
fm.register(board_info.KEY0, fm.fpioa.GPIOHS0)
fm.register(board_info.KEY1, fm.fpioa.GPIOHS1)
fm.register(board_info.KEY2, fm.fpioa.GPIOHS2)
# 构造GPIO对象
key0 = GPIO(GPIO.GPIOHS0, GPIO.IN, GPIO.PULL_UP)
key1 = GPIO(GPIO.GPIOHS1, GPIO.IN, GPIO.PULL_UP)
key2 = GPIO(GPIO.GPIOHS2, GPIO.IN, GPIO.PULL_UP)
contrast = 2
brightness = 2
saturation = 2
# 配置GPIO对象的中断
def key_irq_handler(key):
    global key0
    global key1
    global key2
    global contrast
    global brightness
    global saturation
   time.sleep_ms(20)
    if key is key0 and key.value() == 0:
       if contrast == -2:
           contrast = 2
       elif contrast == 2:
           contrast = -2
       # 设置摄像头输出画面的对比度
       sensor.set_contrast(contrast)
    if key is key1 and key.value() == 0:
       if brightness == -2:
           brightness = 2
       elif brightness == 2:
           brightness = -2
       # 设置摄像头输出画面的亮度
       sensor.set_brightness(brightness)
    if key is key2 and key.value() == 0:
       if saturation == -2:
           saturation = 2
       elif saturation == 2:
           saturation = -2
       # 设置摄像头输出画面的饱和度
       sensor.set_saturation(saturation)
key0.irq(key_irq_handler, GPIO.IRQ_FALLING, GPIO.WAKEUP_NOT_SUPPORT, 7)
key1.irq(key_irq_handler, GPIO.IRQ_FALLING, GPIO.WAKEUP_NOT_SUPPORT, 7)
key2.irq(key_irq_handler, GPIO.IRQ_FALLING, GPIO.WAKEUP_NOT_SUPPORT, 7)
# 初始化LCD
lcd.init()
# 初始化摄像头
sensor.reset()
# 设置摄像头输出帧大小
sensor.set_framesize(sensor.QVGA)
# 设置摄像头输出格式
sensor.set_pixformat(sensor.RGB565)
# 设置摄像头水平镜像
sensor.set_hmirror(False)
# 设置摄像头输出画面的对比度、亮度、饱和度
sensor.set_contrast(contrast)
sensor.set_brightness(brightness)
sensor.set_saturation(saturation)
while True:
    # 显示摄像头输出图像至LCD
    lcd.display(sensor.snapshot())

可以看到首先对中断按键、LCD和摄像头进行了初始化。
接着是配置摄像头输出的帧大小以及输出格式。
然后是针对摄像头的摆放方向配置摄像头进行水平镜像,水平镜像后后续才能在LCD和CanMV IDE软件的“帧缓冲区”窗口中看到“较为正常”的图像画面。
最后就是在一个循环中不断地获取摄像头输出的图像数据,然后将图像在LCD显示屏上进行显示。
当KEY0按键触发中断的时候,调整摄像头输出画面的对比度;当KEY1按键触发中断的时候,调整摄像头输出画面的亮度;当KEY2按键触发中断的时候,调整摄像头输出画面的饱和度。

27.4 运行验证
将DNK210开发板连接CanMV IDE后,点击CanMV IDE上的“开始(运行脚本)”按钮后,可以看到LCD上实时地显示这摄像头采集到的画面。接下来分别按下KEY0按键、KEY1按键和KEY2按键,可以看到LCD上显示的摄像头画面的对比度、亮度和饱和度发生了变化,分别如下图所示:

图27.4.1 摄像头输出画面对比度为-2

图27.4.2 摄像头输出画面对比度为2

图27.4.3 摄像头输出画面亮度为-2

图27.4.4 摄像头输出画面亮度为2

图27.4.5 摄像头输出画面饱和度为-2

图27.4.6 摄像头输出画面饱和度为2

标签:输出,画面,V1.0,LCD,CanMV,GPIO,使用指南,sensor,摄像头
From: https://www.cnblogs.com/zdyz/p/18436304

相关文章

  • 地平线静态目标检测 MapTR 参考算法-V1.0
    1.简介高清地图是自动驾驶系统的重要组件,提供精确的驾驶环境信息和道路语义信息。传统离线地图构建方法成本高,维护复杂,使得依赖车载传感器的实时感知建图成为新趋势。早期实时建图方法存在局限性,如处理复杂地图元素的能力不足、缺乏实例级信息等,在实时性和后处理复杂度上存在挑战......
  • 雨情教务排课系统V1.0.2
    PC端雨情教务排课系统,支持班级设置、课程设置、教师设置、排课模板、课表打印、课程冲突提醒等功能。提供全部无加密源代码,支持私有化部署。V1.0.2优化视图中变量htmlentities输出优......
  • 智尚房产中介小程序V1.0.0
    原生微信小程序,为房地产中介提供房源管理、发布、报备客户、跟踪客户以及营销推广获客等服务的系统。V1.0.0发布版本......
  • SimpleRAG-v1.0.3:增加文件对话功能
    Kimi上有一个功能,就是增加文件之后对话,比如我有如下一个私有文档:会议主题:《如何使用C#提升工作效率》参会人员:张三、李四、王五时间:2024.9.2614:00-16:00会议内容:1.自动化日常任务许多日常任务可以自动化,从而节省时间和精力。例如,如果你需要定期处理大量数据,可以使用C#编......
  • JavaScript对象方法使用指南:成为对象操作达人
    ......
  • ChatGPT 4o 使用指南 (9月更新)
     首先基础知识还是要介绍得~一、模型知识:GPT-4o:最新的版本模型,支持视觉等多模态,OpenAI文档中已经更新了GPT-4o的介绍:128k上下文,训练截止2023年10月(作为对比,GPT-4-Turbo截止2023年12月)。GPT-4Turbo:支持视觉等多模态,128k上下文,训练截止2023年12月。GPT-3......
  • 国内外ChatGPT4o& o1使用指南,无限制使用【2024-09最新】~
    其实使用起来门槛还是不低的,因为OpenAI已经将大陆地区进行了屏蔽但是条条大路通罗马,因为广大网民以及广大开发者的智慧,以及加上一些对应的风控和脱敏,也是可以用的。下面是一些网站:域名标签推荐指数特色https://www.yixiaai.comfree、file、gpt3.5、gpt4.0、gpt4.0、gpt40、g......
  • 丹摩智算:ChatGLM-6B模型的部署与使用指南
    文章目录......
  • nessus快速安装使用指南(非常详细)零基础入门到精通,收藏这一篇就够了
    Nessus是一款功能强大的漏洞扫描工具,用于识别系统、网络和应用中的安全漏洞。本文将提供Nessus的快速安装与使用指南,帮助迅速上手这款工具。一、安装Nessus1.下载Nessus安装包首先,访问Nessus官方网站(https://www.tenable.com/downloads/nessus?loginAttempted=true),根据......
  • 智慧小区物业管理小程序V1.0.6
    智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组合,助力物业节约成本高效运营。V1.0.6房屋高层多层别墅可分别设置收费1.新增房屋......