使用OpenCV和Python(正确)旋转图像(P0,前情提要)
让我告诉你一个尴尬的故事,六年前我在研究生院浪费了三周的研究时间。
那是我第二学期课程的结束。
我提前参加了所有的考试,这学期的所有项目都已经提交了。
由于我在学校的义务基本上是零,我开始尝试(自动)在图像中识别处方药,这是我知道的一两件事(但那时我才刚刚开始研究)。
当时,我的研究目标是找到并确定以旋转不变的方式可靠量化药丸的方法。无论药丸是如何旋转的,我都希望输出的特征向量(大致)相同(由于照明条件、相机传感器、浮点错误等原因,在现实应用中,特征向量永远不会完全相同)。
第一周之后,我取得了惊人的进步。
我能够从我的药片数据集中提取特征,对它们进行索引,然后识别我的药片测试集,不管它们是如何定向的…
……然而,有一个问题:
我的方法只适用于圆形药片——对于长方形药片,我得到了完全没有意义的结果。
怎么可能?
我绞尽脑汁想得到解释。
我的特征提取算法的逻辑有缺陷吗?
我是否没有正确匹配功能?
或者这完全是另一回事……比如我的图像预处理问题。
作为一名研究生,我可能会羞于承认这一点,但问题是后者:
我搞砸了。
事实证明,在图像预处理阶段,我的图像旋转不正确。
由于圆形药丸的长宽比近似为正方形,因此旋转缺陷对它们来说不是问题。在这里,你可以看到一个圆形药丸旋转了360度,没有任何问题:


但对于长方形药丸,它们会在旋转过程中被“切断”,如下所示:


本质上,我只是在量化旋转的长方形药丸的一部分;因此我得出了奇怪的结果。
我花了三个星期的时间,在圣诞节假期的一部分时间里,我的头撞在墙上试图诊断这个病毒——但当我意识到这是因为我对CV2的疏忽时,我感到非常尴尬。旋转功能。
你看,输出图像的大小需要调整,否则,我的图像的角会被切掉。
我是如何做到这一点,并将错误永远压扁的?
要了解如何使用OpenCV旋转图像,以便包含整个图像,并且不切断任何图像,敬请期待。
以下是原文链接:
https://www.pyimagesearch.com/2017/01/02/rotate-images-correctly-with-opencv-and-python/