项目中用到的是ov5640摄像头,因为是对着自己的人脸进行拍摄,所以使用别人给的例程里面的驱动程序会有些别扭。因为自拍的时候一般都习惯性的左右翻转摄像头,这样人往左移,图像中的人脸也会往左移,往右同理。
遇到问题,想到两个方案:
方案一:直接软件处理,使用程序将图像翻转过来。这样简单粗暴,但是会更多的耗费FPGA资源或者程序处理的时间。所以否决。
方案二:查找摄像头的相关资料,看能否直接硬件翻转。
找到《OV5640_自动对焦照相模组应用指南(DVP_接口)__R2.13C》,里面说的很明白:
可以看出来,只是两个寄存器:0x3820控制上下翻转,0x3821控制左右翻转。但是具体设置什么数值没有直接写出。继续往下看关于这两个寄存器的配置:
0x3820,给数值0x41就是上下翻转,0x3821,给数值0x07就是左右翻转。再看具体程序驱动中的配置:
可以看出,寄存器0x3821给的数值是0x01,所以将其改成0x07应该能实现左右翻转。改完之后,发现果真已经可以了。
{ 0x3820, 0x43 }, //上下镜像:0x43正常;0x41上下翻转
{ 0x3821, 0x07 }, //左右翻转,0x01正常,0x07上下翻转