阿波罗的OV5640摄像头实验的输出图像为何总是压扁状态?

2019-07-20 20:01发布

我把输出尺寸改为 600x800,比例仍然压扁。RGB模式。

OV5640_OutSize_Set(0, 0, 600, 800);
        DCMI_Start();                                                                  //Æô¶ˉ′«êä
        LCD_Clear(BLACK);



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
HenryYam
2019-07-21 04:56
本帖最后由 HenryYam 于 2016-9-17 22:18 编辑

终于搞定了。

1,OV5640_OutSize_Set(4, 0, 600, 800);  //不明白的是,这里的第一个参数 “4”是何意义?

2,void rgblcd_dcmi_rx_callback(void) 这个函数定义里面,最后要添加一行:

//if(CurrentLineNo < lcddev.height) CurrentLineNo ++;
    if(CurrentLineNo < 800) CurrentLineNo ++;
        else CurrentLineNo = 0; //这一行是后加上去的。如果没有这一行,则图像最下部分有条重影带。

3,最重要的一点,是要改变画面比例。这需要在 ov5640cfg.h 文件中的 const u16 ov5640_rgb565_reg_tbl[][2] 定义中,修改以下几行:

//        0x3800, 0x00, // HS
//        0x3801, 0x00, // HS
//        0x3802, 0x00, // VS
//        0x3803, 0x00, // VS
//        0x3804, 0x0a, // HW (HE)  2623 = 2592+16+16-1
//        0x3805, 0x3f, // HW (HE)
//        0x3806, 0x06, // VH (VE)  1705 = ? 不明白这个数字是怎么来的?垂直方向上不是有1944个点吗,怎么只有1706个点了?
//        0x3807, 0xa9, // VH (VE)
   
   
    0x3800, 0x02, // HS
        0x3801, 0x91, // HS
        0x3802, 0x00, // VS
        0x3803, 0x00, // VS
        0x3804, 0x07, // HW (HE)  1935 (1278 x 1705)
        0x3805, 0x8f, // HW (HE)
        0x3806, 0x06, // VH (VE)
        0x3807, 0xa9, // VH (VE)

以上注释掉的是原来的数值。

一周热门 更多>