SOPHON OpenCV的imread jpeg解码结果和原生OpenCV的imread jpeg结果不同存在误差

原生opencv使用libjpeg-turbo,而bm_opencv采用了bm168x芯片中的jpeg硬件加速单元进行解码。

误差主要来自解码输出YUV转换到BGR的过程中。

  1. YUV需要上采样到YUV444才能进行BGR转换。这个upsample的做法没有标准强制统一,jpeg-turbo提供了默认Fancy upsample,也提供了快速复制上采样的算法,原生opencv采用默认的fancy upsample;而BM168x硬件加速单元采用快速复制的算法。
  2. YUV444到BGR的转换是浮点运算,浮点系数精度的不同会有+/-1的误差。其中1)是误差的主要来源。

这个误差并不是错误,而是双方采用了不同的upsample算法所导致的。

你可能感兴趣的:(SOPHON,SDK常见问题,opencv,计算机视觉,人工智能)