如何以Data Matrix为基准获取图像旋转角度?
问题:获取Data Matrix旋转角度的最佳方法?
{: width="200"}
我有一批如上所示的图像,每张图都包含一个Data Matrix,但无法保证其与坐标轴对齐。不过无论旋转角度如何,我都能通过libdmtx可靠读取这些矩阵。但我还需要旋转图像,使标签保持正向。我的思路是获取Data Matrix的旋转角度,再用PIL将图像旋转至正确方向。pylibdmtx.decode会返回矩阵包含的数据,以及一个我原本认为是Data Matrix边界框的矩形。为验证这点,我用上图运行了以下代码:
from PIL import Image from pylibdmtx.pylibdmtx import decode def segment_qr_code(image: Image.Image): data = decode(image)[0] print(data.rect) if __name__ == "__main__": segment_qr_code(Image.open('<path to image>'))
遗憾的是,代码返回了Rect(left=208, top=112, width=94, height=-9)。由于高度为负,我认为这并非Data Matrix的正确边界框;即便它是,我也不知道如何用它获取旋转角度。
获取Data Matrix旋转角度的最佳方法是什么?
我原本打算用边界框裁剪图像,得到仅包含Data Matrix的分割图,再通过图像阈值处理或轮廓提取获取旋转角度。但我不确定如何获取正确的边界框,即便得到也不知如何使用阈值处理,而且我更倾向于不用阈值处理,因为它并非始终准确。Data Matrix的底部和左侧始终有实心边框,我认为可以将其作为基准对齐图像,但未找到能返回Data Matrix旋转角度的库。
欢迎任何建议,提前致谢。
内容的提问来源于stack exchange,提问作者Jon Zavialov
相关产品推荐
相关产品推荐

