网络摄像头项目

1.OV2640 简介

        OV2640 是 OV(OmniVision)公司生产的一颗 1/4 寸的 CMOS UXGA(1632*1232)图像 传感器。该传感器体积小、工作电压低,提供单片 UXGA 摄像头和影像处理器的所有功能。通 过 SCCB 总线控制,可以输出整帧、子采样、缩放和取窗口等方式的各种分辨率 8/10 位影像 数据。

        OV2640 的特点有:

        ⚫ 高灵敏度、低电压适合嵌入式应用

        ⚫ 标准的 SCCB 接口,兼容 IIC 接口

        ⚫ 支持 RawRGB、RGB(RGB565/RGB555)、GRB422、YUV(422/420)和 YCbCr(422) 输出格式

        ⚫ 支持 UXGA、SXGA、SVGA 以及按比例缩小到从 SXGA 到 40*30 的任何尺寸

        ⚫ 支持自动曝光控制、自动增益控制、自动白平衡、自动消除灯光条纹、自动黑电平校 准等自动控制功能。同时支持色饱和度、色相、伽马、锐度等设置。

        ⚫ 支持闪光灯

        ⚫ 支持图像缩放、平移和窗口设置

        ⚫ 支持图像压缩,即可输出 JPEG 图像数据

        ⚫ 自带嵌入式微处理器

        OV2640 的功能框图图如图  

最后,我们介绍一下 OV2640 的图像数据输出格式。首先我们简单介绍一些定义:

        UXGA ,即分辨率位 1600*1200 的输出格式,类似的还有: SXGA(1280*1024) 、 WXGA+(1440*900)、XVGA(1280*960)、WXGA(1280*800)、XGA(1024*768)、SVGA(800*600)、 VGA(640*480)、CIF(352*288)、WQVGA(400*240)、QCIF(176*144)和 QQVGA(160*120)等。 

        PCLK,即像素时钟,一个 PCLK 时钟,输出一个像素(或半个像素)。

        VSYNC,即帧同步信号。

        HREF /HSYNC,即行同步信号。

        OV2640 的图像数据输出(通过 Y[9:0])就是在 PCLK,VSYNC 和 HREF/ HSYNC 的控制 下进行的。

        首先看看行输出时序,如图 40.1.1.5 所示:

 

从上图可以看出,图像数据在 HREF 为高的时候输出,当 HREF 变高后,每一个 PCLK 时 钟,输出一个 8 位/10 位数据。我们采用 8 位接口,所以每个 PCLK 输出 1 个字节,且在 RGB/YUV 输出格式下,每个 tp=2 个 Tpclk,如果是 Raw 格式,则一个 tp=1 个 Tpclk。比如我们采用 UXGA 时序,RGB565 格式输出,每 2 个字节组成一个像素的颜色(高低字节顺序可通过 0XDA 寄存 器设置),这样每行输出总共有 1600*2 个 PCLK 周期,输出 1600*2 个字节。

        再来看看帧时序(UXGA 模式),如图 40.1.1.6 所示:    

     

上图清楚的表示了OV2640在UXGA模式下的数据输出。我们按照这个时序去读取OV2640 的数据,就可以得到图像数据。

最后说一下 OV2640 的图像数据格式,我们一般用 2 种输出方式:RGB565 和 JPEG。当输 出 RGB565 格式数据的时候,时序完全就是上面两幅图介绍的关系。以满足不同需要。而当输 出数据是 JPEG 数据的时候,同样也是这种方式输出(所以数据读取方法一模一样),不过 PCLK 数目大大减少了,且不连续,输出的数据是压缩后的 JPEG 数据,输出的 JPEG 数据以: 0XFF,0XD8 开头,以 0XFF,0XD9 结尾,且在 0XFF,0XD8 之前,或者 0XFF,0XD9 之后,会有 不 定 数 量 的 其 他 数 据 存 在 ( 一 般 是 0 ), 这 些 数 据 我 们 直 接 忽 略 即 可 , 将 得 到 的 0XFF,0XD8~0XFF,0XD9 之间的数据,保存为.jpg/.jpeg 文件,就可以直接在电脑上打开看到图 像了。

 数字摄像头接口 (DCMI)

DCMI 简介

        数字摄像头接口是一个同步并行接口,能够接收外部 8 位、10 位、12 位或 14 位 CMOS 摄 像头模块发出的高速数据流。可支持不同的数据格式:YCbCr4:2:2/RGB565 逐行视频和压 缩数据 (JPEG)。

DCMI 主要特性

        ● 8 位、10 位、12 位或 14 位并行接口

        ● 内嵌码/外部行同步和帧同步

        ● 连续模式或快照模式

        ● 裁剪功能

        ● 支持以下数据格式: — 8/10/12/14 位逐行视频:单色或原始拜尔格式 — YCbCr 4:2:2 逐行视频 — RGB 565 逐行视频 — 压缩数据:JPEG

DCMI 功能概述

        数字摄像头接口是一个同步并行接口,可接收高速(可达 54 MB/s)数据流。该接口包含多 达 14 条数据线 (D13-D0) 和一条像素时钟线 (PIXCLK)。像素时钟的极性可以编程,因此可 以在像素时钟的上升沿或下降沿捕获数据。

        这些数据被放到 32 位数据寄存器 (DCMI_DR) 中,然后通过通用 DMA 进行传输。图像缓冲 区由 DMA 管理,而不是由摄像头接口管理。

        从摄像头接收的数据可以按行/帧来组织(原始 YUB/RGB/拜尔模式),也可以是一系列 JPEG 图像。要使能 JPEG 图像接收,必须将 JPEG 位(DCMI_CR 寄存器的位 3)置 1。

        数据流可由可选的 HSYNC(水平同步)信号和 VSYNC(垂直同步)信号硬件同步,或者通 过数据流中嵌入的同步码同步。

捕获模式

        此接口支持两种类型的捕获:快照(单帧)和连续采集。

 

void lwip_demo(void){struct netconn *conn;static ip_addr_t ipaddr;uint8_t remot_addr[4];static u16_t port;uint32_t *jpeg_buf;uint32_t jpeg_len;conn = netconn_new(NETCONN_TCP); /* 创建一个 TCP 链接 */netconn_bind(conn,IP_ADDR_ANY,8088); /* 绑定端口 8088 号端口 */netconn_listen(conn); /* 进入监听模式 */while (1){err = netconn_accept(conn,&g_newconn); /* 接收连接请求 */if (err == ERR_OK){/* 初始化 ATK-MC2640 模块 */lwip_camera_init();/* 为 JPEG 缓存空间申请内存 */jpeg_buf = mymalloc(SRAMIN, DEMO_JPEG_BUF_SIZE);delay_ms(1000);while (1) {jpeg_len = DEMO_JPEG_BUF_SIZE / (sizeof(uint32_t));memset((void *)jpeg_buf, 0, DEMO_JPEG_BUF_SIZE);/* 获取 ATK-MC2640 模块输出的一帧 JPEG 图像数据 */atk_mc2640_get_frame((uint32_t)jpeg_buf,ATK_MC2640_GET_TYPE_DTS_32B_INC, NULL);/* 获取 JPEG 图像数据的长度 */while (jpeg_len > 0){if (jpeg_buf[jpeg_len - 1] != 0){break;}jpeg_len--;}jpeg_len *= sizeof(uint32_t);/* 发送 JPEG 图像数据 */err = netconn_write(g_newconn,jpeg_buf,jpeg_len,NETCONN_COPY); if ((err == ERR_CLSD) || (err == ERR_RST)){myfree(SRAMIN,(void *)jpeg_buf);netconn_close(g_newconn);netconn_delete(g_newconn);break;}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】LoRA:大语言模型中低秩自适应分析

LoRA:大型语言模型中的低秩自适应调优策略 一、LoRA的原理与优势二、LoRA在编程和数学任务中的性能表现四、总结与展望 随着人工智能技术的飞速发展,大型语言模型已成为自然语言处理领域的明星技术。然而,这些模型通常拥有数以亿计的参数&…

做好产线工控安全的关键

在现代化工业生产中,产线工控安全是确保生产顺利进行、产品质量稳定、员工生命安全的重要一环。随着信息技术的飞速发展,工控系统面临着越来越多的安全威胁,因此,如何做好产线工控安全成为了摆在我们面前的重要课题。 首先&#x…

使用Python进行高并发压测:技术指南与实战案例

目录 一、引言 二、压测基础知识 压测的目的与类型 压测工具的选择 三、使用Python进行压测 Python压测框架的选择 压测脚本的编写 压测的执行与监控 四、实战案例分析 案例背景介绍 压测计划制定 压测实施过程 结果分析与优化建议 五、常见问题与解决方案 六、…

centos7下卸载MySQL,Oracle数据库

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 操作系统版本为CentOS 7 使⽤ MySQ…

JVM 运行流程

JVM 是 Java 运行的基础,也是实现一次编译到处执行的关键,那么 JVM 是如何执行的呢? JVM 执行流程 程序在执行之前先要把java代码转换成字节码(class 文件), JVM 首先需要把字节码通过一定的 方式 类加…

文件怎么加密?文件加密软件哪个好用?

在数字化生活和工作中,文件安全已成为不容忽视的话题。 为了保护个人隐私和企业敏感数据不被非法访问或泄露,文件加密成为了不可或缺的手段。 本文将介绍文件加密的基本概念、加密方法以及推荐几款好用的文件加密软件,帮助您为重要文件穿上“…

捋一捋C++中的逻辑运算(一)——表达式逻辑运算

注意,今天要谈的逻辑运算是C语言编程中的“与或非”逻辑运算,不是数学集合中的“交并补”逻辑运算。而编程中的逻辑运算又包括表达式逻辑运算和位逻辑运算,本章介绍表达式逻辑运算,下一章介绍位逻辑运算。 目录 一、几个基本的概…

视频号上怎么卖货?需要直播,还有粉丝吗?一篇文章带你了解!

大家好,我是电商糖果 关于在视频号上卖货,这是大家最常提起的话题。 大家之所以对视频号卖货感兴趣,主要原因还是抖音卖货火起来了。 而视频号是和抖音处于同一个赛道,这两年也在往电商方向发力。 所以大家对视频号推出电商平…

Window11端口开放防火墙

(1)打开控制面板,进入【控制面板\系统和安全\Windows Defender 防火墙】 (2)点击左侧菜单【高级设置】,进入防火墙设置页面 (3)根据需要选择【入站规则】或者【出站规则】&#xff…

ubtun三节点安装k8s

文章目录 修改Ubuntu配置关闭swap:关闭防火墙 安装docker 修改Ubuntu配置 关闭swap: vim /etc/fstab /dev/disk/by-uuid/a1ce2ecf-91f4-4f53-9984-b2af1e9713c5 /boot ext4 defaults 0 1 /swap.img none swap sw 0 0修改/dev/dis…

nestjs 全栈进阶--拦截器

视频教程 23_nestjs中的拦截器_哔哩哔哩_bilibili 1. rxjs 介绍 RxJS(Reactive Extensions for JavaScript)是一款专为JavaScript和TypeScript设计的响应式编程库,它遵循ReactiveX规范,提供了一套强大的工具和API,用…

Mac 使用Docker安装Elasticsearch、Kibana

安装ElasticSearch 通过docker安装es docker pull elasticsearch:8.6.2 在本地创建elasticsearch.yml文件 mkdir /Users/ky/Documents/learn/es/elasticsearch.yml 编辑yml文件内容 http: host: 0.0.0.0 xpack.security.enabled: false xpack.security.enrollment.enabled: t…

Scala 练习一 将Mysql表数据导入HBase

Scala 练习一 将Mysql表数据导入HBase 续第一篇:Java代码将Mysql表数据导入HBase表 源码仓库地址:https://gitee.com/leaf-domain/data-to-hbase 一、整体介绍 HBase特质 连接HBase, 创建HBase执行对象 初始化配置信息:多条(hbase.zookeeper.…

ARM学习(28)NXP 双coreMCU IMX1160学习

笔者最近接触到一块IMXRT1160的双core板子,特依次来记录学习一下 1、IMXRT1160 板子介绍 介绍一下NXP的Demo板子,是一个双core的板子,Cortex-M7和Cortex-M4,总计1MB的RAM空间,256KB的ROM空间,提供了丰富的…

Window10磁盘的分盘和合并

注意: 当我们c盘不够大需要扩大磁盘空间时,当c盘后面没有未划分的磁盘时候,我们是无法进行扩充c盘的,此时,我们可以先删除后面一个磁盘,再进行扩大。 如下:c盘后没有未分配的空间,…

【项目管理常见问题大揭秘】每个管理者都要Get的「五维思维」~

走上管理岗☸要懂得五维思维 💼自我管理——做自己的CEO 严于律己:严格要求自己,注重个人品牌建设 宽以待人:接纳不同观点,提升团队凝聚力 尊重事实:鼓励团队成员发挥优势,避免负面评价 坚守诚…

求助:西莫电子期刊 交流互助 传递

点击上方 “机械电气电机杂谈 ” → 点击右上角“...” → 点选“设为星标 ★”,为加上机械电气电机杂谈星标,以后找夏老师就方便啦!你的星标就是我更新动力,星标越多,更新越快,干货越多! 关注…

Java面经——SpringCloud微服务

SpringCloud SpringCloud的五大组件 注册中心网关远程调用负载均衡熔断降级 谈谈你对SpringCloud的理解 SpringCloud是为了解决微服务架构中出现的一系列服务治理难题的而提出的一套规范,统一了标准。降低了微服务架构的开发难度。有了 Spring Cloud 这样的技术生…

【android 9】【input】【8.发送按键事件2——InputDispatcher线程】

系列文章目录 本人系列文章-CSDN博客 目录 系列文章目录 1.简介 1.1流程介绍 1.2 时序图 2.普通按键消息发送部分源码分析(按键按下事件) 2.1 开机后分发线程阻塞的地方 2.2 InputDispatcher::dispatchOnceInnerLocked 2.3 InputDispatcher::disp…

使用C语言实现贪吃蛇(超详细)

目录 实现贪吃蛇我们要知道哪些? Easyx图形库 Easyx的安装 游戏思路 游戏实现 头文件的使用 ​编辑和食物以及控制方向的初始化 对于坐标的实现: 食物颜色的实现: 游戏数据的初始化 加载音乐 图形窗口的设置: 蛇身节数…