资源简介
stm32F103最小系统板控制摄像头获取数据,给出相偏移量传给飞控,可以用红外控制,图像数据也可以存入SD中,后续看回放
代码片段和文件信息
#include “AllHead.h“
u8 MidGreyVal = 0x59;//可调阀值
//截取出来的图片 是原图的1/8
u8 cutImg[NEEDHEIGHT][NEEDWITH] = {0};
/*存储左右边界的黑点位置,大小为截出来的图片高度除以隔行扫描数*/
u8 leftBlackLoc[(NEEDHEIGHT)/(SKIPLINE)] = {0};
u8 rightBlackLoc[(NEEDHEIGHT)/(SKIPLINE)] = {0};
/*存储最为有效的段,在左右边界中挑选出来*/
u8 maxUsefulBlackLine[(NEEDHEIGHT)/(SKIPLINE)] = {0};
u8 maxUsefulLineLen = 0;
//存储最长有效段的高度位置
u8 maxUsefulBlackHeight[(NEEDHEIGHT)/(SKIPLINE)] = {0};
extern u8 ov_sta; //在exit.c里 面定义
/*拟合以后的斜率*/
extern double overK;
extern int b;
extern int cmdByLine;
/*检测到的直线相对于中线位置的偏移*/
int lineDeviationLoc;
/*
函数功能,统一调用图像采集到数据处理的函数
*/
void cameraOperation(void)
{
u8 res = 0;
u8 res1 = 0;
u8 res2 = 0;
cameraRefresh();//图像采集二值化以及LCD显示
/*紧接着分析边沿,获取左右黑点位置,最后一个参数为检测时的间隔行数*/
getLineEdge(leftBlackLocrightBlackLoc0NEEDHEIGHT-1SKIPLINE);
/*获取最长的有效段,只取一个有效段*/
res = getUsefulLine();
if(res == BOTHLOST)//完全丢失,需要做的动作
{
//printf(“NULL Slope\n“);
}
else //其他情况都有斜率,试着计算出来
{
/*使用最小二乘法计算出斜率*/
res1 = regression(maxUsefulBlackLine&maxUsefulLineLen&overK&b);
if(res1 == GOTSLOPE)
{
cmdByLine = getCmdBySlope();//获取命令
// switch(cmdByLine)
// {
// case RIGHT0_30:printf(“+0_30“);break;
// case RIGHT30_45:printf(“+30_45“);break;
// case RIGHT45_60:printf(“+45_60“);break;
// case RIGHTMORETHAN60:printf(“More+60“);break;
// case LEFT0_30:printf(“-0_-30“);break;
// case LEFT30_45:printf(“-30_-45“);break;
// case LEFT45_60:printf(“-45_-60“);break;
// case LEFTMORETHAN60:printf(“More -60“);break;
// default:printf(“ERROR!“);break;
// }
}
else
{
}
/*专门做左右边界偏移检测的工作*/
res2 = getCmdByDeviLoc();//根据直线相对的偏移获取的命令
}
printToUart();
memsetBothBlackLoc();//做完一次摄像头采集刷新操作都要清空!
}
/*
函数功能:从OV7670的FIFO中读出像素,在翻转的基础上进行二值化,并在LCD上显示调试
*/
void cameraRefresh(void)
{
u32 m = 0;u32 n = 0;u32 mm = 0;u32 nn = 0;u16 color;
u8 color_rcolor_gcolor_b;
u8 y;
if(ov_sta)//有帧中断更新?
{
OV7670_RRST=0; //开始复位读指针
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1; //复位读指针结束
OV7670_RCK_H;
for(m = 0;m < 240;m ++)//行
{
for(n = 0;n < 320;n ++)//列
{
//读取两个字节的数据
OV7670_RCK_L;
color=GPIOA->IDR&0XFF; //读数据,摄像头使用PC0-7作为数据输入输出,GPIOC的端口输入数据寄存器
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=GPIOA->IDR&0XFF; //读数据,虽然用不到,但是要是不读这个送color,整个屏幕会出现闪动,所以为了调试方便,还是读一下
OV7670_RCK_H;
color_r=(color&0xf800)>>8;
color_g=(color&0x07e0)>>3;
color_b=(color&0x001f)<<3;
y=(color_r*77+color_g*150+color_b*29+128)>>8;
/*
判断阀值,进行显示二值
但为了显示到LCD上可以看到,使用两个字节进行表示二值
*/
if( m % 4 == 0)//选中需要的行了,隔着两行 60
{
if( n % 4 == 0)//选中的列,隔着四列 80
{
/*进行数组的翻转存储
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1131 2018-04-18 10:49 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\AllHead.h
文件 2356 2012-03-08 22:40 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\DMA\dma.c
文件 700 2011-10-08 17:55 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\DMA\dma.h
文件 1186 2018-01-11 15:33 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\EXTI\exti.c
文件 126 2018-01-08 09:23 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\EXTI\exti.h
文件 19823 2017-08-05 18:27 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\grey.c
文件 1449 2017-08-05 17:57 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\grey.h
文件 3861 2018-04-18 11:21 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\HX1838.c
文件 421 2018-02-27 16:26 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\HX1838.h
文件 1813 2012-09-13 15:05 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\KEY\key.c
文件 1114 2012-09-13 15:26 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\KEY\key.h
文件 16156 2012-08-25 14:01 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\LCD\font.h
文件 50109 2012-10-08 15:19 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\LCD\lcd.c
文件 8640 2012-09-18 13:16 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\LCD\lcd.h
文件 1555 2016-07-08 21:13 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\leastsquare.c
文件 157 2016-07-08 20:54 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\leastsquare.h
文件 1461 2018-01-14 15:38 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\LED\led.c
文件 796 2017-08-05 22:36 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\LED\led.h
文件 4887 2018-03-01 11:36 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\moto.c
文件 250 2018-02-27 14:24 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\moto.h
文件 2879 2018-04-18 10:47 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\OV7670\ov7670.c
文件 949 2018-04-18 11:15 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\OV7670\ov7670.h
文件 2810 2018-01-09 10:29 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\OV7670\ov7670config.h
文件 4307 2018-01-09 09:12 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\OV7670\sccb.c
文件 1155 2018-01-01 16:20 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\OV7670\sccb.h
文件 7073 2018-04-19 13:19 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\Pic_Process.c
文件 694 2018-04-17 21:15 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\Pic_Process.h
文件 1004 2016-07-09 15:57 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\sendCmd.c
文件 113 2016-07-08 09:33 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\sendCmd.h
文件 1672 2017-08-08 22:05 基于STM32F103系列ov7670获取图像控制量并实时会存入SD卡中\HARDWARE\TIMER\timer.c
............此处省略321个文件信息
相关资源
- STM32F207的U盘_USB_IAP升级程序 Bootloade
- STM32倒立摆代码
- 基于STM32的智能寻迹小车,利用32的库
- 基于STM32F107的232通讯例程
- STM32F103C8T6 IAP-串口在线升级
- STM32F103 步进电机驱动程序
- 基于STM32F103C8T6的NRF24L01无线通讯模块
- SPI_adis16470 主机版本 飞控算法的姿态
- LD3320程序+原理图.rar
- miniboard_modbus_demo.7z
- STM32的DSP库
- stm32 MPU6050四元数姿态结算程序
- 3,ALIENTEK MiniSTM32开发板原理图
- 基于STM32C8T6的最小系统的工程模板文
- STM32F10x舵机控制
- 室内空气质量监测控制系统
- 四位数码管STM32计时程序
- stm32F107 CAN通讯的程序
- 基于stm32的交流异步电机控制系统的设
- stm32f103c8t6模数转换AD例程
- STM32CubeMx开发
- proteus8.6仿真stm32f103
- 基于STM32F103的LCD1602的IIC显示程序
- 基于STM32的AD采集与SD卡数据存储
- STM32蓝牙工程源码,亲测,以实现手机
- 履带小车STM32F401ZG
- HC-SR04超声波模块+STM32F103
- stm32+测速+调速2019.5.30.rar
- 基于STM32F407(1HZ~600KHZ)频率,占空比
- STM32接上位机程序
评论
共有 条评论