【朝花夕拾】RT1170 CSI 如何使能摄像头Y8功能

【朝花夕拾】RT1170 CSI 如何使能摄像头Y8功能

  • 一,文档简介
  • 二,RT1170 CSI Y8黑白格式配置与测试
    • 2.1 软硬件情况
    • 2.2 Y8黑白格式的具体配置
    • 2.3 测试结果

一,文档简介

RT1170的CSI可以支持YUV格式,所谓的YUV分为三个分量:Y表示亮度(Luminance),即灰度值;UV表示色度(Chrominance),描述色度和饱和度。和RGB类似,YUV也是一种颜色编码方法,它可以把亮度信息Y与色度信息UV分离。如果要显示黑白,可以没有UV信息,只有Y信息,即Y800=Y8 ,也同样可以显示完整的图像。对于RT1170 YUV,官方SDK提供了基于YUV444格式的例程,但是在实际使用中,有些客户需要Y8格式的功能,那么应该如何基于现有的YUV SDK去做配置呢?
从RT1170的参考手册,可以看到如下信息:
在这里插入图片描述

图 1
该描述,可以理解为需要Y8模式,只要配置:

CSI_CR20[BINARY_EN]=0
CSI_CR20[BIG_END]=1

但是,实际通过这种配置,原本的YUV代码无法显示摄像头数据了,那么到底应该怎样做摄像头的Y8配置,才能通过LCD显示出黑白的图像呢?本文将会给出详细讲解。

二,RT1170 CSI Y8黑白格式配置与测试

2.1 软硬件情况

板子:MIMXRT1170-EVK REV C4
LCD: RK055AHD091
摄像头:OV5640
代码:SDK_2_15_000_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\csi\mipi_yuv\cm7
IDE: MCUXPresso IDE v11.9.0

2.2 Y8黑白格式的具体配置

实际上,对于CSI_CR20配置,还需要使能Histogram功能,即如下几项:
在这里插入图片描述

图 2
下面给出基于SDK evkmimxrt1170_csi_mipi_yuv_cm7 demo,修改成Y8的几个修改点,主要修改文件csi_mipi_yuv.c:
(1) static void DEMO_InitPxp(void)函数
修改:

PXP_SetCsc1Mode(DEMO_PXP, kPXP_Csc1YCbCr2RGB);

为:

PXP_SetCsc1Mode(DEMO_PXP, kPXP_Csc1YUV2RGB);

此项如果不改,LCD将会全部显示为绿色。
(2)static void DEMO_InitCamera(void)函数
在BOARD_InitMipiCsi();之前,添加代码:

CSI->CR20 |= CSI_CR20_QRCODE_EN_MASK | CSI_CR20_HISTOGRAM_EN_MASK;

这里没有配置CSI_CR20[BINARY_EN]=0,是因为复位默认就是0,如果实际应用中,该位被修改过,那么这里就需要添加BINARY_EN清0,表示输出为Y8,不是Y1。
这里,之前不能显示图片的原因是因为HISTOGRAM_EN没有开启。
(3) static void DEMO_CSI_MIPI_YUV(void)函数
修改psBufferConfig结构体如下:

    pxp_ps_buffer_config_t psBufferConfig = {
        .pixelFormat = kPXP_PsPixelFormatY8, //kPXP_PsPixelFormatYUV1P444, /* Note: This is 32-bit per pixel */
        .swapByte    = false,
        .bufferAddrU = 0U,
        .bufferAddrV = 0U,
        .pitchBytes  = DEMO_CAMERA_WIDTH,//DEMO_CAMERA_WIDTH * DEMO_CAMERA_BUFFER_BPP,//
};

主要两个点:

.pixelFormat = kPXP_PsPixelFormatY8,
.pitchBytes = DEMO_CAMERA_WIDTH,

如果只是修改了像素格式为Y8,但是pitchBytes不修改成摄像头宽度,那么结果LCD显示将会是上面一小条,而不是整个LCD屏幕显示摄像头的Y8格式黑白图像。
到目前为止,所有Y8相关的修改项目已经结束。
最后,需要注意下, 默认的SDK的LCD显示屏,并不是本文选择的:RK055AHD091。
所以需要修改display_support.h中的DEMO_PANEL宏为如下内容:

#define DEMO_PANEL DEMO_PANEL_RK055AHD091

下面,编译工程,并且下载代码到MIMXRT1170-EVK板子中。

2.3 测试结果

下面使用同一张彩色的图片对着摄像头分别测试YUV以及Y8显示的效果,话不多说,直接上图。
在这里插入图片描述

左边的图片的摄像头格式是YUV444, 右边图片是Y8的格式,可以看到左边是彩色的,右边显示的就是黑白的,成功的完成了黑白Y8的摄像头数据采集以及LCD显示。
如果需要工程包的朋友,请移步NXP官方论坛:
RT1170 camera CSI Y8 format modification

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/734055.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

xocde编辑器支持修改为中文吗?不支持

xocde编辑器支持修改为中文吗? 不支持

储能电池竞争出海分析

锂电池的激烈竞争进一步蔓延到储能行业。为保市场份额和现金流稳定,不少储能电池企业都开始大幅度降低报价只求中标储能项目。 随着6月的储能电芯的最高限价和系统报价都已经贴近成本价,一二三线的储能电池厂商将要如何应对? 1、储能规模快速…

Redis进阶 - Redis 淘汰策略

我们知道Redis是分布式内存数据库,基于内存运行,可是有没有想过比较好的服务器内存也不过几百G,能存多少数据呢,当内存占用满了之后该怎么办呢?Redis的内存是否可以设置限制? 过期的key是怎么从内存中删除的…

重学java 80.Junit单元测试

我总是着急的解释我自己,却忘了厚爱无需多言 —— 24.6.21 一、Junit介绍 1.概述 Junit是一个单元测试框架,可以代替main方法去执行其他的方法 2.作用 可以单独执行一个方法,测试该方法是否能跑通 3.注意 Junit是第三方工具,所以使用之前需要导入jar包 二、J…

1.SG90

目录 一.实物图 二.原理图 三.简介 四.工作原理 一.实物图 二.原理图 三.简介 舵机(英文叫Servo),是伺服电机的一种,伺服电机就是带有反馈环节的电机,这种电机可以进行精确的位置控制或者输出较高的扭矩。舵机…

在线二维码解码器:将二维码转换成网址链接

在当今数字化时代,二维码(QR码)已成为一种便捷的信息传递工具。它不仅可以存储大量数据,还能快速分享信息。然而,有时我们需要将二维码中的内容转换为网址链接,以便在浏览器中直接访问。小编将详细介绍如何…

关于jupyter notebook的使用经验

jupyter notebook 第一点,调整每次打开jupyter notebook的时候的位置第二点,如何设置jupyter notebook可以使用本地anaconda创建的虚拟环境呢?第三点,使用jupyter notebook的技巧 以下三点都是独立的,可以根据自己的需…

【Gradio】构建自定义多模态聊天机器人

这是我们构建自定义多模态聊天机器人组件两部分系列的第一部分。在第一部分中,我们将修改 Gradio 聊天机器人组件,使其能够在同一消息中显示文本和媒体文件(视频、音频、图片)。在第二部分中,我们将构建一个自定义的文…

3D视觉引导机器人提升生产线的自动化水平和智能化程度

随着智能化技术的不断发展,汽车制造企业正积极寻求提升智能化水平的途径。富唯智能的3D视觉引导机器人抓取技术为汽车制造企业提供了一种高效、智能的自动化解决方案。 项目目标 某汽车制造企业希望通过引入智能化技术提升生产线的自动化水平和智能化程度。他们希望…

哎呦我, HashMap KeySet有序? 好像是哈

背景:有8个格子,上架物品时需要从第一个格子开始上架,不能跳格子,也就是说 如果格子1空着,就不能把物品放到格子2。有这么个顺序的情况 前人模块功能实现: 用HashMap 初始化格子信息,然后用 Ke…

2024年【T电梯修理】免费试题及T电梯修理考试总结

题库来源:安全生产模拟考试一点通公众号小程序 T电梯修理免费试题参考答案及T电梯修理考试试题解析是安全生产模拟考试一点通题库老师及T电梯修理操作证已考过的学员汇总,相对有效帮助T电梯修理考试总结学员顺利通过考试。 1、【多选题】TSGT7005-2012《…

基于vue3 + ant-design 使用阿里图标库iconfont.cn

对于使用 iconfont.cn 的用户&#xff0c;通过设置 createFromIconfontCN 方法参数对象中的 scriptUrl 字段&#xff0c; 即可轻松地使用已有项目中的图标。 组件封装 IconFont <template><IconFont :type"iconType" /> </template><script se…

联想Y7000P 2023款拆机教程及升级内存教程

0.电脑参数介绍 联想Y7000P 2023电脑&#xff0c;笔者电脑CPU为i7-13700H&#xff0c;14核20线程&#xff1b;标配内存为三星的DDR5-5600MHz-8GB*2&#xff0c;由于电脑CPU限制&#xff0c;实际内存跑的频率为5200MHz; 2个内存插槽&#xff0c;2个固态硬盘插槽。每个内存插槽最…

【Linux基础】SSH登录

SSH简介 安全外壳协议&#xff08;Secure Shell Protocol&#xff0c;简称SSH&#xff09;是一种加密的网络传输协议&#xff0c;可在不安全的网络中为网络服务提供安全的传输环境。 SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH最常见的用途是远程登…

python自动化办公工具:自动批量生成奖状的工具(可视化)

&#x1f446;点击关注 获取更多编程干货&#x1f446; 不知道大家有没有注意到一种趋势&#xff0c;现在即便是那些非程序员&#xff0c;甚至对计算机一窍不通的人&#xff0c;也开始学习Python了&#xff0c;其“普及程度”实在让人感到有些惊讶。 那么&#xff0c;对于那些…

Github 2024-06-22 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3JavaScript项目2Python项目2HTML项目1Rust项目1Dart项目1Dockerfile项目1Shell项目1C++项目1Swift项目1RustDesk: 用Rust编写的…

一个电商创业者眼中的618:平台大变局

战役结束了&#xff0c;战斗还在继续。 一位朋友去年5月创业&#xff0c;网上卖咖啡&#xff0c;这个赛道很拥挤&#xff0c;时机也不好&#xff0c;今年是他参加第一个618。朋友说&#xff0c;今年的目标是锤炼团队&#xff0c;总结方法&#xff0c;以及最重要的——活下去。…

getPhysicalNumberOfCells获取列数不是合并前实际列数

问题就是:有的导入复杂表头被合并的单元格有默认空字符串&#xff0c;有的直接不存在这个单元格 实际我需要下面这种情况 断点可以看到这个导入第一行合并了&#xff0c;被合并单元格还有默认的空字符串 解决办法就是在合并单元格里面判断&#xff0c;不是第一行第一列都设置…

FENDI CLUB精酿啤酒与小麦的不解之缘

FENDI CLUB精酿啤酒与小麦之间这种联系体现在啤酒的酿造原料、口感特色以及文化内涵等多个方面。以下是关于这两者之间关系的详细分析&#xff1a; 一、酿造原料的紧密联系 小麦作为关键原料&#xff1a;FENDI CLUB精酿啤酒在酿造过程中&#xff0c;小麦是不可或缺的原料之一…

压缩包文件密码破解软件 Ziperello 下载及使用教程

使用 Ziperello https://qweree.cn/index.php/416/ 对加了密码的压缩包进行密码破解&#xff0c;教程如下&#xff1a; 第一步&#xff0c;双击运行 Ziperello双击我打开程序.exe&#xff0c;如下图&#xff1a; 第二步&#xff0c;打开一个加了密的 ZIP 压缩包&#xff0c;再…