5.基于STM32F103+OV7670的网络摄像头

来源:互联网 发布:孙艺洲 知乎 编辑:程序博客网 时间:2024/04/29 01:54

前面移植了ucGUI,按说接下来应该说一下如何移植摄像头,不过如果根据奋斗开发板附带的源码摸索,也基本能看明白,无非就是初始化,设置中断和读取数据,添加任务等。

如果移植好了摄像头,那接下来就该移植uip了,这个确实头大,我搞了三天没搞成功,后来直接用书上附带的源码学习了,不过没有使用UCOS系统。


我把uip和摄像头的两个项目合并了,做了一个网络摄像头,下位机用MDK511实现,上位机用QT 5.3.2实现。


最主要的部分是修改了UDP_demo.c文件内的内容,当请求媒体流时,读取摄像头中的信息并发送,但uip不支持自动分片,而且一个视频画面有320*720*2的长度,无法一次发送,我设置了一个721长度的short类型的数组,手动将视频信息分片,第一个元素存放视频的编码,因为是通过UDP发送,防止乱序,后面存放该视频的内容,所以数组长度是1+720

pic[i]=CMOS_Data;//USART_OUT(USART1,"will send pic%d,sizeof(pic)=%d\r\n",j,sizeof(pic));if(i>719){if(j==number){//USART_OUT(USART1,"will send pic%d,sizeof(pic)=%d\r\n",j,sizeof(pic));myudp_send((char *)pic,sizeof(pic));break;}j++;pic[0]=j;i=0;}

上位机用QT编写,新建一个QImage,设置格式为Format_RGB16,然后把从下位机通过网络发送的包写到数组pic中相应的位置即可

image=QImage(pic,320,240,QImage::Format_RGB16);

当然,我QT也是现学现用,只求把功能实现了,有许多要改进的地方,勿怪

0 0
原创粉丝点击