资源简介

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个文件信息

评论

共有 条评论