精华内容
下载资源
问答
  • 用于智能车摄像头对赛道的识别,寻中线的算法,和对摄像头的详细介绍等等。
  • 恩智浦智能车摄像头组图像处理以及寻线程序..智能车摄像头图像处理
  • 对硬件和软件设计思路的介绍,以及对赛道的类型和赛道的提取都有详细的介绍,适合初学者看,帮助初学者理清思路。
  • 智能车摄像头

    2019-03-20 20:24:28
    智能车比赛摄像头例程,供大家参考,有问题可以一起改正。
  • 该代码为恩智浦智能车大赛第十二届摄像头组国赛一等奖代码,完整的代码工程,无保留。希望可以给需要的人一点帮助。里面处理赛道的思想大家可以取其精华弃其糟粕。
  • 智能车摄像头组代码

    2018-04-19 19:45:53
    华东赛智能车摄像头的代码,2.8m/s的速度,有边线识别以及舵机控制,车模是C车
  • 恩智浦智能车竞赛十二届国赛程序,稳定速度3.2m,实验室速度更快,根据个人水平,提升空间还很大。注释详细,适合新手,同样适合老鸟。
  • 恩智浦西部赛区一等奖智能车资料(主板+驱动板+程序代码等),适合新手入门使用
  • 适合智能车初学者了解摄像头处理
  • 能够通过这个上位机在线的导入图片,对图片进行图像处理。
  • 思卡尔智能车摄像头的选择及安装:做了4个多月的智能车,受益匪浅,虽然最后因为单片机烧掉很无奈的推出了比赛,但是从中学到了好多,和大家分享一下,也为和我一样曾经迷茫的初学者一点指引。
  • 飞思卡尔智能车摄像头组程序(非常完整) 精心整理,可以直接使用 飞思卡尔智能车摄像头组程序(非常完整)
  • 第八届智能小车摄像头组程序 包括图像采集,图像处理(黑线提取),舵机控制,电机控制 处理器:XS128 摄像头:ov7620 图像处理包括了黑线提取,赛道还原,虚线处理,十字弯甄别等 电机控制:pid控制速度
  • 智能车摄像头完整程序工程,在单片机上开发智能车摄像头视野寻转技术,获过奖的哦
  • 智能车摄像头调试助手,可在上位机上观看图像
  • 飞思卡尔智能车摄像头组元器件清单 包括电容电阻 等电子方面的器件,以及机械的铜柱等物品,内容详细
  • 2010年校内赛CCD摄像头程序,注释详细,简单易懂,此程序经修改可以变得非常强大
  • k60主板摄像头组,iarIDE下整个工程文件,可以正常识别并跑完赛道
  • 恩智浦智能车摄像头组图像处理以及寻线程序
  • 本作品是乐山师范学院摄像头智能车技术报告,是第五届作品,具有很大参考价值。
  • 作为恩智浦智能车刚入门的同学,是个很好的参考资料,祝你在智能车比赛中能收获的更多
  • DemokTool是一款DEMOK工作室针对Freescale(飞思卡尔)智能车摄像头开发的调试工具,需要与其自主研发的Freescale系列核心板(MC9S12XS128、K60)和智能车摄像头配套使用,可实现摄像头图像显示、二值化数据显示和模拟...
  • 专门为飞思卡尔智能车摄像头组设计的模块板,首先声明!板子今天刚刚送出去打了,还没有测试,打回来后才知道使用结果,使用请谨慎!今年是B车,所以驱动板电源线比较宽,电源模块也比较宽,合适大电流。五个模块,...
  • 了解摄像头的安装以及引脚。 正确使用单核主板的液晶历程,使液晶能够显示灰度图像。 了解并应用二值化方法,使显示的灰度图像变为二值化图像。 编写扫线程序,收集左右边界数组,正确利用赛道宽或斜率补线,并...

    第一阶段: 基础阶段

    1. 了解摄像头的安装以及引脚。
    2. 正确使用单核主板的液晶历程,使液晶能够显示灰度图像。
    3. 了解并应用二值化方法,使显示的灰度图像变为二值化图像。
    4. 编写扫线程序,收集左右边界数组,正确利用赛道宽或斜率补线,并实现在液晶屏幕中画出中心线。

    第一阶段验收:在车轮闭环且PID稳定的条件下,实现小车直行,转弯和十字路口;最终使小车运行稳定,使摄像头图像采取稳定,为第二阶段的实现提供基础。

    第二阶段:特殊元素---采取图像数据能力

    1. 圆环以及误判处理。
    2. 三岔以及误判处理。
    3. 十字误判处理。

    常见采取数据的方法:利用左右边界数组及其运算, 区域扫线,左右丢线或左右相对丢线,采点等。

    常见改变小车轨迹方法:改弯线,改直线(加限幅处理)。

    第二阶段验收:车轮稳速,实现圆环入环出环,三岔路口多次识别,十字不误判,尽可能缩减代码运行速度;小车可以跑完全程。

    第三阶段:小车提速

    1. 在小车改稳的前提下,检查检测特殊元素的条件是否成立;改大拉线数组,权重置前。
    2. 使用电磁,陀螺仪改善小车运行情况,以达到提速的目的。

    展开全文
  • 恩智浦智能车摄像头循迹部分

    千次阅读 多人点赞 2020-07-10 09:35:53
    恩智浦智能车摄像头循迹部分 对于恩智浦智能车竞赛已经举行了14届,从以往的电磁车已经逐渐转变成了用摄像头进行循迹。与电磁循迹对比,摄像头拥有着诸多优势,但摄像头对于很多新手入门来说却是比较困难的。下面将...

    恩智浦智能车摄像头循迹部分

    		对于恩智浦智能车竞赛已经举行了14届,从以往的电磁车已经逐渐转变成了用摄像头进行循迹。与电磁循迹对比,摄像头拥有着诸多优势,但摄像头对于很多新手入门来说却是比较困难的。下面将给新手介绍我们对摄像头循迹部分的处理。大家都知道,单片机从摄像头采集到数据后,必须对图像进行相应的二值化(即0,1)后才方便对图像进行处理。在得到二值化图像后如何进行处理并且进行巡线呢?
    一获取中线
    
    	for(j=MT9V032_H-5;j>20;j--)
     	{			
    				for(i = 0 ;i <=MT9V032_W/2;i++)
    				{
    					if(i==MT9V032_W/2-2)
    					{	
    						left=MT9V032_W/2;
    						break;
    					}
    					if(img[j][MT9V032_W/2-i] <= 10 && img[j][MT9V032_W/2-i-1] <= 10)
    					{	left = i;break;}												
    				}
    				for(i = 0 ;i < MT9V032_W/2;i++)
    				{	
    					if(i==MT9V032_W/2-2)
    					{	
    						right=MT9V032_W/2;
    						break;
    					}
    					if(img[j][MT9V032_W/2+i] <= 10 && img[j][MT9V032_W/2+1+i] <= 10)
    					{	right = i;break;}		
    				}
    				if(j<30)
    					midder[j]=MT9V032_W/2-(left-right)*1.5;
    				else
    					midder[j]=MT9V032_W/2-(left-right);
    				minder=minder+(MT9V032_W/2-midder[j]);		
    				
    	}
    
    获取中线的原理在于图像的中线下方往两边进行找黑线,找到黑线后进行记录。并且两边的黑线到中点的距离进行作差,即可得到对应该横的中点值,依次往上进行寻找中线,最后把所有中点与中线的误差积累在minder变量中即可得到车子里中线的偏差。
    但这样获得中线的方式存在一个问题:当车模快在过弯时摄像头拍摄的位置将不会是赛道的方向,拍摄的位置可能为赛道的外侧,那么计算中线的位置将会出现问题。因此我们需要引入一个结束点,在查找中线时检测到巡线位置已经到达边缘时暂停结束巡线详细代码如图
    
    				if(midder[j]<10||midder[j]>MT9V032_W-10||j<21)
    				{
    					if(j>60)
    						minder=minder*j*3.4;
    					else
    						minder=minder*j*0.03;
    					if(minder>2000)minder=2000;
    					if(minder<-2000)minder=-2000;
    					break;
    				}
    

    具体的比例系数需要大家对自己的车模进行一一的调整。

    展开全文
  • // 智能车摄像头边界跟踪 // 边界跟踪 #include "boundary_following.h" void boundary_following(uint8*image,uint8*image_border) //image为二值化后图像,image_border为计算后得到图像64*94 { int i=63,j,...

    下面展示一些 内联代码片

    // 智能车摄像头边界跟踪
    
    // 边界跟踪
    #include "boundary_following.h"
    
    void boundary_following(uint8*image,uint8*image_border)  //image为二值化后图像,image_border为计算后得到图像64*94
    { 
        int i=63,j,dir_left=2,dir_right=2;
        int x,y;
        int border_left,border_right;
        int times = 1000;
        //------------------------第一步确定起始点------------------------------------------------//
        //确定起始点。根据光栅扫描,发现第一个象素值为1的点为起始点,存储其坐标值
        for(y=0;y<64;y++) //clear
            for(x=0;x<94;x++)
                image_border[y][x]=0;
        
        for(j = 0;j<94;j++)
        {
            if(image[63][j]==1 && image[63][j+1]==1 && image[63][j+2]==1 && image[63][j+3]==1)
            {
                border_left = j;
                break;
            }
        }
        for(j=93;j>=0;j--)
        {
            if(image[63][j]==1 && image[63][j-1]==1 && image[63][j-2]==1 && image[63][j-3]==1)
            {
                border_right = j;
                break;
            }
        }
        i = 63;
        j = border_left;
    
        y = 63;
        x = border_right;
        //--------------------------第二步研究邻域点-----------------------------------------------------------//
        //从起点的0邻域点开始,逆时针方向研究其8邻域点值,找到第一个象素值为1的点,存储其坐标值
        //left
        //循环做下去   >=62 && border_right+-2
        while(times>0)
        {
            //left
              switch(dir_left%8)
            {
                case 0: {i+=1;j =j;};break;
                case 1: {i+=1;j-=1;};break;
                case 2: {i =i;j-=1;};break;
                case 3: {i-=1;j-=1;};break;
                case 4: {i-=1;j =j;};break;
                case 5: {i-=1;j+=1;};break;
                case 6: {i =i;j+=1;};break;
                case 7: {i+=1;j+=1;};break;
                default:{};break;
            }
            if(image[i][j]==1)
            {
                image_border[i][j] = 1; //找到边界
                if(dir_left%2==0)
                dir_left = (dir_left+7)%8;
                else
                dir_left = (dir_left+6)%8;
            }
            else
            {
                if(dir_left<8)
                dir_left++; 
                else
                {
                }
            }
    
            //right
              switch(dir_right%8)
            {
                case 0: {y+=1;x =x;};break;
                case 7: {y+=1;x-=1;};break;
                case 6: {y =y;x-=1;};break;
                case 5: {y-=1;x-=1;};break;
                case 4: {y-=1;x =x;};break;
                case 3: {y-=1;x+=1;};break;
                case 2: {y =y;x+=1;};break;
                case 1: {y+=1;x+=1;};break;
                default:{};break;
            }
            if(image[y][x]==1)
            {
                image_border[y][x] = 1; //找到边界
                if(dir_right%2==0)
                dir_right = (dir_right+7)%8;  //来自边界跟踪法
                else
                dir_right = (dir_right+6)%8;
            }
            else
            {
                if(dir_right<8)
                dir_right++; 
                else
                {}
            }
    
            if(i==y&&j==x)break;
             times--;
        }   
    }
    
    展开全文
  • 用于飞思卡尔智能车摄像头查看图像显示 非常方便 只需串口
  • 目前,CCD应用技术已成为集光学、电子学、精密机械及微计算机为一体的综合性技术,在现代光子学、光电检测技术和现代测量技术中成果累累。
  • 智能车备战、透视变换pdf、matlab源码
  • 智能车摄像头组怎么在OLED屏画出中线

    千次阅读 多人点赞 2019-11-15 19:12:47
    首先对摄像头返回的数组进行解压,我这里解压到img[]这个数组,里面的元素要么是1,要么是0. 通常,为了方便我们进行提取中线操作,会继续用数值0表示黑色,而数值255表示白色,再用一个二维数组image[][]表示。...

    首先你要知道二值化这个基本操作,不会的请去看资料。
    假设0 在OLED中代表黑色,1在OLED中代表白色。
    在这里插入图片描述
    首先对摄像头返回的数组进行解压,我这里解压到img[]这个数组,里面的元素要么是1,要么是0.

    在这里插入图片描述
    通常,为了方便我们进行提取中线操作,会继续用数值0表示黑色,而数值255表示白色,再用一个二维数组image[][]表示。(只是种方法而已,不同的程序对摄像头返回数组的处理方法可能不一样。)
    在这里插入图片描述
    定义三个数组,一个放左边沿的列值,一个放右边沿列值,一个放中线列值。
    这里对小白选手详细解释,以60*80像素为例,顾名思义,60行,80列。
    在这里插入图片描述

    这是一幅未拟合中线的二值化图片,上面已经说过在image[][]数组中,0代表黑色,255代表白色,那么在上面这幅图片中,我们随便选一行,假设这一行是25行,绿色标识
    在这里插入图片描述
    那么这一行的信息,在image[25][]中,肯定是000000000…255 255 255 255 255 255 … 00000000这样存储
    什么是跳变沿,跳变沿这个概念是数字电路中的,反映在物理背景上,就是你要找的白色赛道的边界,在程序中就是00 255 255这个交界处,这是左边沿,右边沿肯定是 255 255 00 处。不管你的程序用的什么方法提取边沿值,全行扫描法也好,边沿巡线法也好,rightedge[25]中的数值肯定右跳变沿像素所在的列值,假设是65,即代表第65列,leftedge[25]中的数值是左边沿像素所在的列值,假设是15,及代表是第15列。那么第25行中线列值即middleedge[25]=40,即第40列。
    这样,每一行都取到中线值。
    在这里插入图片描述
    然后呢,为了画中线,找到中线像素所在的位置,将这个位置的像素赋值为0,原像素为1,即白色像素更改为黑色像素。
    最后,调用OLED画图像函数
    在这里插入图片描述
    这样就成功了。

    总的来讲,流程是提取图像信息,寻找左右边沿线,拟合中线,更改中线所在位置各像素数值,调用画图函数。

    请问龙邱的彩色屏咋整,请去仔细学习像素的基本知识,推荐 数字图像处理 这本书。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,090
精华内容 8,836
关键字:

智能车摄像头