ov5642图像旋转方法

关于图像旋转问题,参考芯片手册,可以得知:与图像旋转相关的寄存器有0x38180x36210x3801

其中0x3818直接控制旋转,修改之前0x3818的值是:0xC1(二进制:11000001),第5位是0,第6位是1,说明图像经过了镜像但没有做翻转处理,实际效果是:图像是上下翻转,左右颠倒的。因此要想把图像转过来需要做如下处理:不经过镜像但是要做翻转处理,那么0x3818寄存器就要修改成0xA1(二进制:10100001)。做完这一步图像可以上下翻转过来了,并且左右也正常,但是存在亮度偏暗问题。如上图手册中说:“for the mirror function, it is also necessary to set registers0x3621[5:4] and 0x3801”。因此,图像偏暗问题可能和0x3621[5:4]0x3801有关。

我们先看0x3621相关内容:


只有这两处说明,并没有具体提到0x3621[5:4]。不过,既然手册中说修改0x3818[6:5]后,也要跟着修改0x3621[5:4],所以,我们先看一下修改之前0x3621的值,查看源码发现修改之前0x3621的值是0x87(二进制:10000111),第4位和第5位都是0。那么,要修改0x3621[5:4],无非就有以下三种可能0xa7(二进制:10100111)0xb7(二进制:10110111)0x97(二进制:1010111)。我们挨个试就可以了,事实证明,0xa7是对的。

再来看一下0x3801相关内容:

上图说0x3801是水平起点低字节,0x3800是水平起点高字节。不太明白啥意思,不过,从字面意思看,应该和亮度关系不大,先不动它。事实证明,它的值确实不影响亮度。

猜你喜欢

转载自blog.csdn.net/bhj1119/article/details/79424358