OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3003|回复: 2

stm32f1 ov2640摄像头拍下的照片怎么只有一小块有图像,哪位大神遇到过?

[复制链接]

10

主题

100

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
322
金钱
322
注册时间
2016-8-21
在线时间
37 小时
发表于 2016-9-10 18:08:07 | 显示全部楼层 |阅读模式
5金钱

以下是我的拍照程序:

u8 ov2640_jpg_photo(char *pname)
{
        FIL* f_jpg;
        u8 res=0;
        u32 bwr;
        u32 i=0;
        u32 jpeglen=0;
        char* pbuf;       
        f_jpg=(FIL *)malloc(sizeof(FIL));        //开辟FIL字节的内存区域
        if(f_jpg==NULL)return 0XFF;                                        //内存申请失败.
        OV2640_JPEG_Mode();                                                        //切换为JPEG模式
          OV2640_OutSize_Set(OV2640_JPEG_WIDTH,OV2640_JPEG_HEIGHT);
        SCCB_WR_Reg(0XFF,0X00);
        SCCB_WR_Reg(0XD3,30);
        SCCB_WR_Reg(0XFF,0X01);
        SCCB_WR_Reg(0X11,0X08);
        for(i=0;i<10;i++)                //丢弃10帧,等待OV2640自动调节好(曝光白平衡之类的)
        {
                while(OV2640_VSYNC==1);         
                while(OV2640_VSYNC==0);          
        }  
        while(OV2640_VSYNC==1)        //开始采集jpeg数据
        {
                while(OV2640_HREF)
                {  
                        while(OV2640_PCLK==0);
                        ov2640_framebuf[jpeglen]=OV2640_DATA;
                        while(OV2640_PCLK==1);  
                        jpeglen++;
                }
        }               
        f_unlink(pname);
        res=f_open(f_jpg,(const TCHAR*)pname,FA_WRITE|FA_CREATE_NEW);//模式0,或者尝试打开失败,则创建新文件       
        if(res==0)
        {
                printf("jpeg data size:%d\r\n\r\n\r\n",jpeglen);        //串口打印JPEG文件大小
                pbuf=ov2640_framebuf;
                for(i=0;i<jpeglen;i++)//查找0XFF,0XD8
                {
                if(pbuf[i]==0xFF);
                        if(pbuf[i+1]==0xD8)
                                while(1)
                                {
                                f_write(f_jpg,&pbuf[i],1,&bwr);
                                        printf("%c",ov2640_framebuf[i]);
                                i++;                       
                                if(pbuf[i-1]==0xFF)
                                        if(pbuf[i]==0xD9)
                                        {
                                                f_write(f_jpg,&pbuf[i],1,&bwr);
                                                break;
                                        }               
                                }
                                if(pbuf[i-1]==0xFF)
                                        if(pbuf[i]==0xD9);//文件创建成功
                                        {
                                                f_close(f_jpg);  
                                                OV2640_RGB565_Mode();        //RGB565模式
                                                free(f_jpg);
                                                return 1;
                                        }
                }
        }
        return 0;
}  

拍下的图片

拍下的图片
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-4-28
在线时间
16 小时
发表于 2016-12-1 15:36:35 | 显示全部楼层
我也遇到了这样的问题,楼主解决了吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-12-1 18:21:12 | 显示全部楼层
直接用我们例程测试下先
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 10:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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