智能车制作

 找回密码
 注册

扫一扫,访问微社区

楼主: 野火
打印 上一主题 下一主题

[摄像头] 野火编写的:ov7725数字摄像头编程基本知识笔记

    [复制链接]

0

主题

12

帖子

0

精华

注册会员

Rank: 2

积分
163
威望
83
贡献
42
兑换币
44
注册时间
2012-12-11
在线时间
19 小时
毕业学校
东南大学
131#
发表于 2012-12-19 16:54:00 | 只看该作者
顶个!!
回复 支持 反对

使用道具 举报

0

主题

96

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3662
QQ
威望
1749
贡献
969
兑换币
643
注册时间
2012-5-24
在线时间
472 小时
132#
发表于 2012-12-22 16:40:39 | 只看该作者
这个得顶!!!!!
回复 支持 反对

使用道具 举报

13

主题

131

帖子

0

精华

高级会员

Rank: 4

积分
930
威望
502
贡献
254
兑换币
196
注册时间
2012-9-23
在线时间
87 小时
133#
发表于 2013-1-1 00:28:31 | 只看该作者
野火 发表于 2012-12-18 10:38
你好,请询问我们的客服来获取

火哥我的7620采集来的图像是60*120的,在ST7735S这款液晶上显示的图像是这样的,黑白之间有蓝色或黄色的分界线,下面貌似乱了,图像还是可以的。请问火哥是神魔问题

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

13

主题

131

帖子

0

精华

高级会员

Rank: 4

积分
930
威望
502
贡献
254
兑换币
196
注册时间
2012-9-23
在线时间
87 小时
134#
发表于 2013-1-1 01:39:35 | 只看该作者
刘胜利 发表于 2013-1-1 00:28
火哥我的7620采集来的图像是60*120的,在ST7735S这款液晶上显示的图像是这样的,黑白之间有蓝色或黄色 ...

火哥我的7620采集来图像存放数组是imagedata[ROW][COLUMN];ROW=60;COLUMN=120;
火哥上面那张图是用void LCD_Img_RGB565_Z (site,size,(u16 *)imagedata, imgsize);//图像显示,带zoom缩放功能显示的,
但是如果用void LCD_Img_Binary_Z   (site,size,(u16 *)imagedata, imgsize); //显示二值化图像(可缩放)显示的话,图像是出不来的,是这样的,请问火哥怎莫回事啊

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
135#
 楼主| 发表于 2013-1-1 09:09:48 | 只看该作者
刘胜利 发表于 2013-1-1 01:39
火哥我的7620采集来图像存放数组是imagedata[ROW][COLUMN];ROW=60;COLUMN=120;
火哥上面那张图是用void  ...

请给代码给我看,以便我们判断
回复 支持 反对

使用道具 举报

13

主题

131

帖子

0

精华

高级会员

Rank: 4

积分
930
威望
502
贡献
254
兑换币
196
注册时间
2012-9-23
在线时间
87 小时
136#
发表于 2013-1-1 10:36:41 | 只看该作者
野火 发表于 2013-1-1 09:09
请给代码给我看,以便我们判断

火哥这个是上面第一幅图像的主程序
#include "common.h"
#include "include.h"
#include <math.h>
////////////////////////////////////////////////////////////////////////////
extern u8 imagedata[ROW][COLUMN];
void swjcs()                 //图像二值化
{      

        
         for (i=0;i<ROW;i++)//lie--60
        {
           for (j=0;j<COLUMN;j++)//hang--120
           {   
            
               if(imagedata[j]>110)//二值化
               {
                 imagedata[j]=255;
               }
               else
              imagedata[j]=0;                 //0是黑色
           }
      }
}
void init()
{
  //------------------LCD------------------------------//
   
     //LP_image();
    //------------------------初始化- --------------------------------------//
    gpio_init  (PORTE, 0, GPI, LOW);           
    gpio_init  (PORTE, 1, GPI, LOW);
    gpio_init  (PORTE, 2, GPI, LOW);           
    gpio_init  (PORTE, 3, GPI, LOW);
    gpio_init  (PORTE, 4, GPI, LOW);           
    gpio_init  (PORTE, 5, GPI, LOW);        
    gpio_init  (PORTE, 6, GPI, LOW);           
    gpio_init  (PORTE, 7, GPI, LOW);                          //配置Y0-Y7通道引脚
   
   
    gpio_init  (PORTA, 27, GPI, HIGH);   
    gpio_init  (PORTE, 26, GPI, HIGH);  
     
    gpio_init  (PORTA, 25, GPI, LOW);                         //PCLK时钟信号线
    DMA_PORTx2BUFF_Init (DMA_CH4, (void *)&PTE_BYTE0_IN, (void *)data, PTA25, DMA_BYTE1, DMA_NUM, DMA_rising);    //DMA中断   
    exti_init(PORTA, 27, falling_down);                         //场同步信号线
    exti_init(PORTE, 26, rising_down);                          //行同步信号线
    //------------------------中断配置--------------------------------------//
    disable_irq(91);                                            //失能行信号中断
    enable_irq(87);                                             //使能场信号中断
}
    //------------------------------主函数-------------------------------------//                           
void main()
{   
    Site_type site={0,0};                                    //显示图像左上角位置
    Size_type size={132,132};                            //显示区域图像大小
    Size_type imgsize = {ROW,COLUMN};
    LCD_Init(RED);
    init();                  //IO和中断的初始化
   
    while(1)
    {            
      if(imageflag == true )
      {     
        imageflag=false;        
        disable_irq (91);                                 //失能行同步信号线
        PORTA_ISFR=~0;
        disable_irq(87);                                  //失能场同步信号线
        LP_image();                                       //中值滤波
        swjcs();              //图像二值化
        LCD_Img_RGB565_Z(site,size,(u16 *)imagedata,imgsize); //图像显示,带zoom缩放功能-------------------上面第一个照片
        //LCD_Img_Binary_Z(site,size,(u16 *)imagedata,imgsize); //显示二值化图像(可缩放)------------------上面第二张照片
       PORTA_ISFR=~0;
        enable_irq(87);                                       //使能场中断   
      }  
         
    }   
}
回复 支持 反对

使用道具 举报

13

主题

131

帖子

0

精华

高级会员

Rank: 4

积分
930
威望
502
贡献
254
兑换币
196
注册时间
2012-9-23
在线时间
87 小时
137#
发表于 2013-1-1 10:47:46 | 只看该作者
火哥第一张照片还有些轻微的上下跳动,在这里谢谢火哥
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
138#
 楼主| 发表于 2013-1-2 22:47:21 | 只看该作者
刘胜利 发表于 2013-1-1 10:47
火哥第一张照片还有些轻微的上下跳动,在这里谢谢火哥

LCD_Img_Binary_Z 的代码是否如下?

void LCD_Img_Binary_Z(Site_t site,Size_t size,u16 *img,Size_t imgsize)
{

        u32 temp, tempY;
    u16 x,y;   
        u16 X,Y;
    u8 * pimg = (u8 *)img;
   
           LCD_PTLON(site,size);                                                 //开窗

        LCD_RAMWR();                                                                //写内存
       
    for(y=0; y < size.H; y++)
    {
        Y = ( (  y * imgsize.H  + (size.H >> 1)) / size.H) ;
        tempY = Y * imgsize.W ;
        
        for(x=0;x<size.W;x++)
        {
            X = (( x * imgsize.W  + (size.W >> 1)) / size.W) ;
            temp = tempY + X;
            if( (pimg[temp>>3] & (1<<(7- (temp & 0x07))) ) == 0  )
            {
                LCD_WR_16Data_BIG( BINARY_BGCOLOR );                //写图像数据
            }
            else
            {
                LCD_WR_16Data_BIG( BINARY_COLOR );                //写图像数据
            }
        }
    }
}
回复 支持 反对

使用道具 举报

22

主题

1613

帖子

1

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6784
QQ
威望
2910
贡献
1540
兑换币
1579
注册时间
2012-3-17
在线时间
1167 小时
139#
 楼主| 发表于 2013-1-2 22:52:16 | 只看该作者
刘胜利 发表于 2013-1-1 10:47
火哥第一张照片还有些轻微的上下跳动,在这里谢谢火哥

第一张照片还有些轻微的上下跳动

是不是采集前,开场中断前,没清中断?

回复 支持 反对

使用道具 举报

13

主题

131

帖子

0

精华

高级会员

Rank: 4

积分
930
威望
502
贡献
254
兑换币
196
注册时间
2012-9-23
在线时间
87 小时
140#
发表于 2013-1-3 19:50:27 | 只看该作者
野火 发表于 2013-1-2 22:52
第一张照片还有些轻微的上下跳动

是不是采集前,开场中断前,没清中断?

火哥对于图像跳动的问题是这样的,只要插上串口液晶图像就不会跳动(上位机程序已经注释掉)一旦拔掉图像就会跳动,没有液晶显示只有上位机显示图像很正常,没有跳动的现象。很奇怪的现象。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-5 19:04 , Processed in 0.213862 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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