/-C-

第一版智能车图传上位机源码

摄像头上位机使用说明


使用说明

  1. 将压缩包解压后得到以下文件:
上位机源码 包含C#上位机源码,已完成一部分的注释工作,可后期自行增加新功能
.exe 打包好的可执行文件,平时使用直接打开这个文件即可
Readme.md 程序说明文件
.sln 程序源码
  1. 打开上位机.exe得到以下界面,将图像大小修改为所使用摄像头对应的120x160(自行修改)

  2. 打开AURIX中的龙邱总测试例程,取消注释TEST_CAMERA函数(逐飞可仿照)

Test_CAMERA();         //PASS,测试龙邱神眼摄像头并在屏幕上显示  LQ_CAMERA.h 中选择屏幕

右键查看定义,取消注释其中的CAMERA_REPORT函数

//上报数据给上位机 串口速度比较慢 注意上位机图像宽高设置为120*160
//CAMERA_Reprot();
  1. 编译并烧录程序,重启单片机

  2. 切换回摄像头上位机,选择合适的端口号和波特率,打开串口,接收图像,此时即可看见摄像头拍摄的原始灰度图像

    1. 再点击右下角获取图像信息及二值化处理,可得到此时图像的灰度分布以及二值化之后的图像
    2. 还可以通过手动设置右上角的二值化阈值改进二值化效果,方便前期调参。

新增的功能

  1. 仿照CAMERA_Reprot()函数,自定义Bin CAMERA_Reprot(),传输二值化无损压缩图像
void CAMERA_Bin_Reprot (void)
{
    short j, i;
    char send;
/////////////////////////////////////////////////////////////////////
//压缩算法
///////////////////////////////////////////////////////////////////////
    UART_PutChar(UART0, 0xfe);  //帧头
    UART_PutChar(UART0, 0xef);  //帧头

          for (i = 0; i < LCDH; i++)
          {
              for (j = 0; j < LCDW;)
              {
                //二值化不会发送帧尾
                //数据压缩
                  send=Bin_Image[i][j]+Bin_Image[i][j+1]<<1\
                       +Bin_Image[i][j+2]<<2+Bin_Image[i][j+3]<<3\
                       +Bin_Image[i][j+4]<<4+Bin_Image[i][j+5]<<5\
                       +Bin_Image[i][j+6]<<6+Bin_Image[i][j+7]<<7;
				//一行版本
                 /*
                  send=Bin_Image[i][j]+(Bin_Image[i][j+1]<<1)+(Bin_Image[i][j+2]<<2)+(Bin_Image[i][j+3]<<3)+(Bin_Image[i][j+4]<<4)+(Bin_Image[i][j+5]<<5)+(Bin_Image[i][j+6]<<6)+(Bin_Image[i][j+7]<<7);
                  */
                  
                //压缩8倍
                  j+=8;
                  UART_PutChar(UART0, send); //发送数据
              }
            }

    UART_PutChar(UART0, 0xef);  //帧尾
    UART_PutChar(UART0, 0xfe);  //帧尾

 }
  1. 将原来调用CAMERA_Reprot()函数的地方注释,二值化之后调用自定义Bin CAMERA_Reprot()函数

    /* 二值化 */
    Get_Bin_Image(1);
    //上报数据给上位机 串口速度比较慢 注意上位机图像宽高设置为120*160
    CAMERA_Bin_Reprot();
  2. 编译并烧录,重启单片机

  3. 切换回上位机,在右侧开启二值化接收

  4. 此时只传输二值化图像,八倍速传速,速度还可以

  5. 上位机修改:本上位机基于龙邱上位机开源方案修改(当然龙邱也是根据开源方案修改),此为开源的第一版,主要是增加了注释,方便大家后续的修改。

    ​ 点击查看代码,主要为增加了ReceiveBinImage()函数,串口发送接收的框架无需修改,可增加自己使用的图像尺寸,或者直接改成输入框输入尺寸(注意同步修改单片机发送函数),也可以增加更多的显示功能。

  6. 缺陷:1.0版本无线串口模块波特率一般就开到468000,即一秒发送58500个char,即使是压缩到四分之一的图像也有600个char,也即发送用时10ms,这在正常运行时几乎是不可以接受的;2.0版本可以在8ms内发送120x160的图像,也可以在2ms内发送压缩到四分之一的图像,除了软件上面的修改,主要是发送硬件更换了方案,因此暂不开源,期待大家有更好的方案或是压缩算法。