注册 登录
查看: 684|回复: 25

用的历程看的摄像头图像是这样

[复制链接]
发表于 2014-11-14 12:42:32 | 显示全部楼层 |阅读模式

这看的 拍的图像是直道

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2014-11-14 12:46:56 | 显示全部楼层
按照这里的方法修复一下:
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.com/forum.php?mod ... tid=4363&ctid=6

你的上位机分辨率设置了多少?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 12:48:51 | 显示全部楼层
仰逸致 发表于 2014-11-14 12:46
按照这里的方法修复一下:
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.co ...

好的, 我先看看, 不懂再请教你了
回复 支持 反对

使用道具 举报

发表于 2014-11-14 12:50:59 | 显示全部楼层
老司机 发表于 2014-11-14 12:48
好的, 我先看看, 不懂再请教你了

你先核实一下上位机的分辨率设置跟单片机的分辨率设置是否相同。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 12:52:08 | 显示全部楼层
仰逸致 发表于 2014-11-14 12:46
按照这里的方法修复一下:
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.co ...

设置的 80* 60
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 13:53:41 | 显示全部楼层


void  main(void)
{
    Site_t site     = {0, 0};                           //显示图像左上角位置
    Size_t imgsize  = {CAMERA_W, CAMERA_H};             //图像大小
    Size_t size;                   //显示区域图像大小

    LCD_init();

    size.H = LCD_H;
    size.W = LCD_W;

   NVIC_SetPriorityGrouping(4);
   NVIC_SetPriority(PORTE_IRQn,0);
   NVIC_SetPriority(PIT1_IRQn,1);
   NVIC_SetPriority(PIT0_IRQn,2);
   NVIC_SetPriority(DMA0_IRQn,3);

    camera_init(imgbuff);
    //配置中断复位函数
    set_vector_handler(PORTA_VECTORn , PORTA_IRQHandler);   //设置LPTMR的中断复位函数为 PORTA_IRQHandler
    set_vector_handler(DMA0_VECTORn , DMA0_IRQHandler);     //设置LPTMR的中断复位函数为 PORTA_IRQHandler

    while(1)
    {
        camera_get_img();                                   //摄像头获取图像

#if     ( CAMERA_COLOR == 1 )                               //灰度摄像头
        LCD_Img_gray_Z  (site, size, imgbuff, imgsize);
#elif   ( CAMERA_COLOR == 0 )                               //黑白摄像头
        LCD_Img_Binary_Z(site, size, imgbuff, imgsize);
#endif

#if 1
        /******************** 发送图像到上位机 ***********************/
        img_extract(img, imgbuff, CAMERA_SIZE);          //解压为灰度图像,方便发送到上位机显
        sendimg(img, CAMERA_W * CAMERA_H);                    //发送到上位机
#endif

    }
}





/*!
*  @brief      PORTA中断服务函数
*  @since      v5.0
*/
void PORTA_IRQHandler()
{
    uint8  n;    //引脚号
    uint32 flag;

    while(!PORTA_ISFR);
    flag = PORTA_ISFR;
    PORTA_ISFR  = ~0;                                   //清中断标志位

    n = 29;                                             //场中断
    if(flag & (1 << n))                                 //PTA29触发中断
    {
        camera_vsync();
    }
#if ( CAMERA_USE_HREF == 1 )                            //使用行中断
    n = 28;
    if(flag & (1 << n))                                 //PTA28触发中断
    {
        camera_href();
    }
#endif


}

/*!
*  @brief      DMA0中断服务函数
*  @since      v5.0
*/
void DMA0_IRQHandler()
{
    camera_dma();
}


//发送图像到上位机显示
//不同的上位机,不同的命令,这里使用 yy_摄像头串口调试 软件
//如果使用其他上位机,则需要修改代码
void sendimg(uint8 *imgaddr, uint32 imgsize)
{
    uint8 cmd[4] = {0, 255, 1, 0 };    //yy_摄像头串口调试 使用的命令

    uart_putbuff(VCAN_PORT, cmd, sizeof(cmd));    //先发送命令

    uart_putbuff(VCAN_PORT, imgaddr, imgsize); //再发送图像
}

//压缩二值化图像解压(空间 换 时间 解压)
//srclen 是二值化图像的占用空间大小
void img_extract(uint8 *dst, uint8 *src, uint32 srclen)
{
    uint8 colour[2] = {255, 0}; //0 和 1 分别对应的颜色
    //注:山外的摄像头 0 表示 白色,1表示 黑色
    uint8 tmpsrc;
    while(srclen --)
    {
        tmpsrc = *src++;
        *dst++ = colour[ (tmpsrc >> 7 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 6 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 5 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 4 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 3 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 2 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 1 ) & 0x01 ];
        *dst++ = colour[ (tmpsrc >> 0 ) & 0x01 ];
    }
}


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-14 13:59:57 | 显示全部楼层
老司机 发表于 1415944421
void  main(void)
{
    Site_t site     = {0, 0};                           //显示图像左上角位置
    Size_t imgsize  = {CAMERA_W, CAMERA_H};             //图像大小
    Size_t size;                   //显示区域图像大小

    LCD_init();

    size.H = LCD_H;
    size.W = LCD_W;

   NVIC_S ...
你按着这里修复了没?
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.com/forum.php?mod=viewthread&tid=4363&ctid=6

好像是没调好焦距,你直接对着一条黑线来采集,看看效果。

如果没搞好,可以直接加我Q。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 17:25:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-14 13:59
你按着这里修复了没?
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.com/fo ...

好的 山外哥
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 19:31:07 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-14 13:59
你按着这里修复了没?
改了底层后解决了图像卡住的问题 - 智能车讨论区 - 山外论坛 http://vcan123.com/fo ...

山外哥。 这个图像 高60 宽80  意思是60*80的分辨率? 分辨率多少比较合适?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 19:56:30 | 显示全部楼层


这个效果,  
如果要弄成这样的
需要 改什么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-14 20:10:44 | 显示全部楼层
老司机 发表于 2014-11-14 19:56
这个效果,  
如果要弄成这样的
需要 改什么?

现在是右边的跑到左边去,按之前楼上给的链接修改一下清标志位顺序。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 20:33:52 | 显示全部楼层
微粒子 发表于 2014-11-14 20:10
现在是右边的跑到左边去,按之前楼上给的链接修改一下清标志位顺序。

顺序改了还是一样,把顺序排了 几次来看 可能频率问题? PLL180 BUS90
回复 支持 反对

使用道具 举报

发表于 2014-11-14 20:40:58 | 显示全部楼层
老司机 发表于 1415968432
顺序改了还是一样,把顺序排了 几次来看 可能频率问题? PLL180 BUS90
试下多清空几次PCLK标志位。

这部分的代码是容易出问题。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-14 20:47:07 | 显示全部楼层
老司机 发表于 1415966190
这个效果,  
如果要弄成这样的
需要 改什么?
鹰眼是硬件二值化图像,不可以输出灰度图像的。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-14 21:04:18 | 显示全部楼层
老司机 发表于 2014-11-14 20:33
顺序改了还是一样,把顺序排了 几次来看 可能频率问题? PLL180 BUS90

试试这样,多清空一次标志位。如果不行,再多清空几次。

  1.         PORTA_ISFR = 1 <<  PT27;            //清空PCLK标志位

  2.         DMA_EN(CAMERA_DMA_CH);                  //使能通道CHn 硬件请求
  3.         PORTA_ISFR = 1 <<  PT27;            //清空PCLK标志位
  4.         DMA_DADDR(CAMERA_DMA_CH) = (uint32)ov7725_eagle_img_buff;    //恢复地址


回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 21:31:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-14 21:04
试试这样,多清空一次标志位。如果不行,再多清空几次。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-14 21:33:19 | 显示全部楼层
老司机 发表于 1415971861
不是在这里,而是在场中断里。

在 ov7725.c  的 ov7725_eagle_vsync  函数里。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-11-14 21:33:55 | 显示全部楼层
老司机 发表于 1415971861
你可以用一下我们的论坛客户端,这样可以比较实时的接收信息。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 21:52:01 | 显示全部楼层
山外メ雲ジ 发表于 2014-11-14 21:33
不是在这里,而是在场中断里。

在 ov7725.c  的 ov7725_eagle_vsync  函数里。


加了 拍出来这样

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-14 21:56:35 | 显示全部楼层

现在这图像是对的,没偏了。

你再调一下焦距和阈值,可以采集到很好的效果。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-14 21:59:53 | 显示全部楼层
宫格格 发表于 2014-11-14 21:56
现在这图像是对的,没偏了。

你再调一下焦距和阈值,可以采集到很好的效果。

好的 我试试,谢谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-15 19:15:04 | 显示全部楼层
宫格格 发表于 2014-11-14 21:56
现在这图像是对的,没偏了。

你再调一下焦距和阈值,可以采集到很好的效果。


  后面有东西挡住的, 是不是那个有影响

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-11-21 20:40:56 | 显示全部楼层
兄弟  你用的KL26  还是K60?
回复 支持 反对

使用道具 举报

发表于 2014-11-21 22:58:53 | 显示全部楼层
老司机 发表于 2014-11-15 19:15
后面有东西挡住的, 是不是那个有影响

看到个 “凸”
回复 支持 反对

使用道具 举报

发表于 2014-11-22 11:37:30 | 显示全部楼层
不错的样子,学习了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-11-22 13:01:21 | 显示全部楼层
suqiang1271 发表于 2014-11-21 20:40
兄弟  你用的KL26  还是K60?

K60 ............
回复 支持 反对

使用道具 举报

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

本版积分规则

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