智能车制作

标题: 我这图像是怎么回事,是光线不足吗? [打印本页]

作者: 那年_夏天    时间: 2012-6-21 22:27
标题: 我这图像是怎么回事,是光线不足吗?
我用的上位机看的图像,原始图像是有在变动,但看不清,[attach]25876[/attach][attach]25876[/attach][attach]25875[/attach][attach]25875[/attach]变化是时感觉很卡,是不是光线太暗的原因,还有这是我没二值化后的图像,二值化后就全部变灰,而且也没变化,请问这是怎么回事?

作者: Smile_Sun    时间: 2012-6-21 22:43

作者: 840149319    时间: 2012-6-22 00:03
上位机看的图形和串口工具看的图像有什么不同?
作者: keyx    时间: 2012-6-22 01:00
没电了吧
作者: 那年_夏天    时间: 2012-6-22 10:03
840149319 发表于 2012-6-22 00:03
上位机看的图形和串口工具看的图像有什么不同?

有的上位机能看到原始图像和二值化的图像,串口只能看到通过二值化后0和1组合出来的图像辨认物体的形状,至少我现在用过是这种情况
作者: 那年_夏天    时间: 2012-6-22 10:05
keyx 发表于 2012-6-22 01:00
没电了吧

有电啊,用的usb供的点啊,,就是不知道为什么会这么模糊。

作者: 那年_夏天    时间: 2012-6-22 10:06
Smile_Sun 发表于 2012-6-21 22:43

,朋友,你知道是怎么回事吗?

作者: turf456    时间: 2012-6-22 11:55
什么摄像头?
作者: 840149319    时间: 2012-6-22 11:59
那年_夏天 发表于 2012-6-22 10:03
有的上位机能看到原始图像和二值化的图像,串口只能看到通过二值化后0和1组合出来的图像辨认物体的形状, ...

涨姿势了

作者: 那年_夏天    时间: 2012-6-22 12:19
turf456 发表于 2012-6-22 11:55
什么摄像头?

数字,ov7620,不知道采集出来的会是这样
作者: martain    时间: 2012-6-22 19:53
采集程序有问题吧
作者: 断点断了    时间: 2012-6-22 22:18
那年_夏天 发表于 2012-6-22 10:05
有电啊,用的usb供的点啊,,就是不知道为什么会这么模糊。

用usb供电?串口供电?

作者: 断点断了    时间: 2012-6-22 22:19
先晒下你的采集程序..估计程序上面有点纰漏...
作者: 那年_夏天    时间: 2012-6-22 22:46
断点断了 发表于 2012-6-22 22:19
先晒下你的采集程序..估计程序上面有点纰漏...

#include "include.h"
#include "photo.h"

#define ROW 47
#define COLUMN  120

unsigned char Buffer[ROW][COLUMN];
unsigned char Image_Data[ROW][COLUMN];

unsigned char Point_C, VSYN_C=0, m = 0,n=0;
unsigned int Line_C=0;

unsigned char Interval;
unsigned char  THRESHOLD=0x45;

void Image_Binaryzation(unsigned int row)  //二值化程序
{
  unsigned char *p_Image;
  unsigned char *q_Image;
  q_Image=&Buffer[row][0];

  for(p_Image=&Image_Data[row][0];p_Image<=&Image_Data[row][COLUMN-1];p_Image++)      
    {
      *(q_Image++)=*p_Image;
  /*if((*p_Image<THRESHOLD))//&&(*(p_Image+1)<THRESHOLD))

      *(q_Image++)=0;
  else

      *(q_Image++)=1;  */
    }  
}

void delay_hang(unsigned char tt)
{
  while(tt-->0)
  {  
    asm("nop");            //延时一个机器周期
  }
}

void show_photo()
{
  unsigned char i,j;

  /*for(i = 0;i<ROW;i++)
  {
    for(j = 0;j <COLUMN ;j++)
    {
      //if(Image_Data[j]>THRESHOLD && Image_Data[j+1]>THRESHOLD && Image_Data[j-1]>THRESHOLD)  
     if(Image_Data[j]>THRESHOLD)  Image_Data[j]=1;//printf("%d",1);
     else Image_Data[j]=0;//printf("%d",0);

      //printf("%d",Image_Data[j]);
    }
    // uart_sendN(UART1,"\n",1);
  }*/
   uart_putchar(UART1,0x00);
   uart_putchar(UART1,0xff);
   uart_putchar(UART1,0x01);
   uart_putchar(UART1,0x00);
    for(i = 0;i<ROW;i++)
  {
    for(j = 0;j <COLUMN ;j++)
    {
       printf("%d",Image_Data[j]);
    }
  }
  //printf("欢迎使用野火Kinetis开发板\n");

}

void main()   
{
  DisableInterrupts;
  u8 i;
  for(i=0;i<=7;i++)
  {
    gpio_init(PORTD,i,GPI,0);
  }
  LED_init();
  exti_init(PORTC,10,falling_down); //C10场中断
  exti_init(PORTA,24,rising_down);  //A24行中断
  EnableInterrupts;  
  PORTA_ISFR  |= (1<<24); //清行中断
  PORTC_ISFR  |= (1<<10); //清场中断
  enable_irq(87);         //开行中断
  enable_irq(89);         //开场中断  
  for(;;)
  {
    if(VSYN_C)
    {
      led(LED2,LED_ON);
      DisableInterrupts;
      show_photo();       //显示采集数据
      VSYN_C=0;
      EnableInterrupts;
    }
  }
}

void PORTA_IRQHandler()   //A24行中断
{
  u8 i,j;
  u8 n=24;
    led(LED1,LED_ON);//引脚号
  if(PORTA_ISFR & (1<<n))           //A24触发中断
  {
    PORTA_ISFR  |= (1<<n);
    m=0;

  /*if ( VSYN_C==0|| m<12 || m>288 )
  {
    return;//判断是否从新的一场开始
  }
  if(m<=144)              Interval=12;
  else if(m>144&&m<=200)  Interval=8;
  else if(m>200&&m<=252)  Interval=6;
  else                    Interval=4; */
   delay_hang(50);//消隐
  Interval=6;
  if(m%Interval==0)
  {
    for(i=0;i<ROW;i++)
  {
    for(j=0;j<COLUMN;j++)
    {
      Image_Data[Line_C][j]=PTD_BYTE0_IN;
      m=m;
    }
      Line_C++;
  }
  m++;
   Image_Binaryzation(Line_C);
  }

  }
  }


  void PORTC_IRQHandler()   //C10场中断
{
  disable_irq(87);
  u8 n=10;      //引脚号
  led(LED0,LED_ON);
  if(PORTC_ISFR & (1<<n))           //C10触发中断
  {
    disable_irq(87);
    PORTC_ISFR  |= (1<<n);
    //Point_C = 0;
    Line_C = 0; //行计数器
    m=0;
    VSYN_C = 1;
     PORTC_ISFR  |= (1<<n);          //写1清中断标志位
  }
  enable_irq(87);     //开启行中断
}
这就是我的程序,帮我看看哪有瑕疵,改很多遍都是不行,现在都不知道怎么改了


作者: 那年_夏天    时间: 2012-6-22 22:47
martain 发表于 2012-6-22 19:53
采集程序有问题吧

能帮忙看下吗,程序在我晒出来了

作者: martain    时间: 2012-6-23 08:39
没看出程序有什么问题,你可以在中断里面放一个灯闪烁的程序,看程序能否进入中断,然后能进中断了,再判断采集程序是不是能采集到灰度值
作者: 那年_夏天    时间: 2012-6-23 10:11
martain 发表于 2012-6-23 08:39
没看出程序有什么问题,你可以在中断里面放一个灯闪烁的程序,看程序能否进入中断,然后能进中断了,再判断 ...

放了呀,两中断和图像采集都设置了指示灯,运行时3个灯都亮了的,证明中断都进去了的,但不知道为什么采集出来的会是这样的图像,改了好几次都不行,现在都不知道怎么改了

作者: martain    时间: 2012-6-23 13:50
你可以试着挡住摄像头,用串口看采集的数据是否有变化,
有变化,则说明采集没问题,看看中断的时序问题
无变化,则为采集问题。
还有你用的是k60,144引脚的吗??
个人感觉你的行中断程序过于复杂!!
作者: keyx    时间: 2012-6-23 13:54
那年_夏天 发表于 2012-6-22 10:05
有电啊,用的usb供的点啊,,就是不知道为什么会这么模糊。

不能用USB供电
作者: 断点断了    时间: 2012-6-23 14:36
那年_夏天 发表于 2012-6-22 22:46
#include "include.h"
#include "photo.h"

不懂野火的程序,建议采集一个点加一个机器周期的延时...还有波特率,将波特率调大一些..

作者: 小挺挺    时间: 2012-6-23 21:11
首先  各种供电最好单独供电 尤其摄像头 影响忒大  其次串口观察一下发送的数据看看像不像一幅图像(简单的说就是用十六进制表示最起码不会总是恒值,或者一段一段恒值,像你这种灰色图像肯定明显看到很多数据连续相同)   再就是观察后几场,第一场数据不稳定,我的就这样    最后友情提醒,串口、上位机等也是人写的,可信度自个电掂量。。。
作者: 那年_夏天    时间: 2012-6-23 22:34
小挺挺 发表于 2012-6-23 21:11
首先  各种供电最好单独供电 尤其摄像头 影响忒大  其次串口观察一下发送的数据看看像不像一幅图像(简单的 ...

谢谢,电是单独供的电,图像是一幅完整的,数据时变化的,但二值化后的图像有时正确,有事不正确,很不稳定,所以改成上位机想看个究竟,还是看不到,现在不知道怎么改了,能提供下思路吗?

作者: 那年_夏天    时间: 2012-6-23 22:41
断点断了 发表于 2012-6-23 14:36
不懂野火的程序,建议采集一个点加一个机器周期的延时...还有波特率,将波特率调大一些..

嗯,谢了,我试试,还有,波特率那个还不算比较大吗?改成115200?还是128000。还是最大的256000会较好?

作者: 那年_夏天    时间: 2012-6-23 22:47
martain 发表于 2012-6-23 13:50
你可以试着挡住摄像头,用串口看采集的数据是否有变化,
有变化,则说明采集没问题,看看中断的时序问题
...

我不挡着,有时数据也不变化,不知道为什么,我用的是K60,144管脚没错,野火的板子,那中断程序师根据128的中断程序移植过来的,我倒是觉不睡很复杂,你也是用的K60+ov7620采集的吗,能加下你的QQ请教你一下吗?我弄了两个月了还是搞不定,好失败啊!

作者: qual9109    时间: 2012-6-23 23:08
上位机不对?
作者: 那年_夏天    时间: 2012-6-24 09:44
qual9109 发表于 2012-6-23 23:08
上位机不对?

对的啊,我用的是有人专门写来用于飞思卡尔比赛用的上位机就是这个eSmartCameraCar

作者: martain    时间: 2012-6-24 19:45
断点断了 发表于 2012-6-23 14:36
不懂野火的程序,建议采集一个点加一个机器周期的延时...还有波特率,将波特率调大一些..

为什么要采集一点,加一个机器周期延时,有什么特别好处吗??
作者: martain    时间: 2012-6-24 19:46
那年_夏天 发表于 2012-6-23 22:47
我不挡着,有时数据也不变化,不知道为什么,我用的是K60,144管脚没错,野火的板子,那中断程序师根据12 ...

可以,但是我也是新手,4月份才开始了解这能车的QQ1191378266
作者: 断点断了    时间: 2012-6-24 22:47
那年_夏天 发表于 2012-6-23 22:41
嗯,谢了,我试试,还有,波特率那个还不算比较大吗?改成115200?还是128000。还是最大的256000会较好? ...

波特率大一点看图像不会显得卡...我用的是115200..这是我用的上位机..[attach]25944[/attach]



作者: 断点断了    时间: 2012-6-24 22:48
martain 发表于 2012-6-24 19:45
为什么要采集一点,加一个机器周期延时,有什么特别好处吗??

可以防止重复采到一个点..

作者: martain    时间: 2012-6-25 18:01
断点断了 发表于 2012-6-24 22:48
可以防止重复采到一个点..

我现在的程序中没有加,图像显示基本完整,有空加延迟试试
作者: 那年_夏天    时间: 2012-6-25 22:32
断点断了 发表于 2012-6-24 22:47
波特率大一点看图像不会显得卡...我用的是115200..这是我用的上位机..

嗯,谢了,我试试




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2