为了让图像中感兴趣的矩形部分旋转至水平或垂直,首先对图像进行处理,使感兴趣的部分与其他部分区别出来。这里假设我们已经将不感兴趣的部分转成黑色,而我们敢兴趣的部分就被突出出来,很容易和背景区分开。
这里还可以对图像进行膨胀和腐蚀,使感兴趣部分图像的小毛刺更平滑,去除小的空洞、裂痕等小的黑色区域。这样能加速后边对感兴趣部分的轮廓搜索。如果没有这一步操作,一般也可以达到目的。根据实际情况,具体分析。
使用findContours搜索感兴趣部分的外轮廓,再使用minAreaRect等函数得到包含该轮廓的最小矩形,最后使用仿射变换函数将图形转正。
- 寻找图像中物体的轮廓
void cv::findContours ( InputOutputArray image,
OutputArrayOfArrays contours,
OutputArray hierarchy,
int mode,
int method,
Point offset = Point()
)