智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: 那年_夏天
打印 上一主题 下一主题

我这图像是怎么回事,是光线不足吗?

  [复制链接]

18

主题

246

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1259

热心会员奖章活跃会员奖章优秀会员奖章

威望
578
贡献
495
兑换币
0
注册时间
2012-3-28
在线时间
93 小时
毕业学校
辽宁石油化工大学
11#
发表于 2012-6-22 19:53:53 | 只看该作者
采集程序有问题吧
回复 支持 反对

使用道具 举报

16

主题

163

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1642
威望
767
贡献
557
兑换币
9
注册时间
2012-2-26
在线时间
159 小时
12#
发表于 2012-6-22 22:18:05 | 只看该作者
那年_夏天 发表于 2012-6-22 10:05
有电啊,用的usb供的点啊,,就是不知道为什么会这么模糊。

用usb供电?串口供电?
回复 支持 反对

使用道具 举报

16

主题

163

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1642
威望
767
贡献
557
兑换币
9
注册时间
2012-2-26
在线时间
159 小时
13#
发表于 2012-6-22 22:19:18 | 只看该作者
先晒下你的采集程序..估计程序上面有点纰漏...
回复 支持 反对

使用道具 举报

8

主题

82

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1281
威望
750
贡献
395
兑换币
24
注册时间
2012-4-2
在线时间
68 小时
14#
 楼主| 发表于 2012-6-22 22:46:55 | 只看该作者
断点断了 发表于 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);     //开启行中断
}
这就是我的程序,帮我看看哪有瑕疵,改很多遍都是不行,现在都不知道怎么改了

回复 支持 反对

使用道具 举报

8

主题

82

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1281
威望
750
贡献
395
兑换币
24
注册时间
2012-4-2
在线时间
68 小时
15#
 楼主| 发表于 2012-6-22 22:47:48 | 只看该作者
martain 发表于 2012-6-22 19:53
采集程序有问题吧

能帮忙看下吗,程序在我晒出来了
回复 支持 反对

使用道具 举报

18

主题

246

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1259

热心会员奖章活跃会员奖章优秀会员奖章

威望
578
贡献
495
兑换币
0
注册时间
2012-3-28
在线时间
93 小时
毕业学校
辽宁石油化工大学
16#
发表于 2012-6-23 08:39:25 | 只看该作者
没看出程序有什么问题,你可以在中断里面放一个灯闪烁的程序,看程序能否进入中断,然后能进中断了,再判断采集程序是不是能采集到灰度值
回复 支持 反对

使用道具 举报

8

主题

82

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1281
威望
750
贡献
395
兑换币
24
注册时间
2012-4-2
在线时间
68 小时
17#
 楼主| 发表于 2012-6-23 10:11:35 | 只看该作者
martain 发表于 2012-6-23 08:39
没看出程序有什么问题,你可以在中断里面放一个灯闪烁的程序,看程序能否进入中断,然后能进中断了,再判断 ...

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

使用道具 举报

18

主题

246

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1259

热心会员奖章活跃会员奖章优秀会员奖章

威望
578
贡献
495
兑换币
0
注册时间
2012-3-28
在线时间
93 小时
毕业学校
辽宁石油化工大学
18#
发表于 2012-6-23 13:50:56 | 只看该作者
你可以试着挡住摄像头,用串口看采集的数据是否有变化,
有变化,则说明采集没问题,看看中断的时序问题
无变化,则为采集问题。
还有你用的是k60,144引脚的吗??
个人感觉你的行中断程序过于复杂!!
回复 支持 反对

使用道具 举报

4

主题

65

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1991
威望
1113
贡献
442
兑换币
56
注册时间
2010-11-11
在线时间
220 小时
19#
发表于 2012-6-23 13:54:57 | 只看该作者
那年_夏天 发表于 2012-6-22 10:05
有电啊,用的usb供的点啊,,就是不知道为什么会这么模糊。

不能用USB供电
回复 支持 反对

使用道具 举报

16

主题

163

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1642
威望
767
贡献
557
兑换币
9
注册时间
2012-2-26
在线时间
159 小时
20#
发表于 2012-6-23 14:36:39 | 只看该作者
那年_夏天 发表于 2012-6-22 22:46
#include "include.h"
#include "photo.h"

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-20 22:43 , Processed in 0.046883 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表